Mam fragment kodu, który zawiera wiele wstawek, ale trzeba wykonać metodę submitchanges przed zakończeniem wstawiania w innych tabelach, aby można było uzyskać identyfikator. Szukałem w Internecie i nie mogłem znaleźć sposobu na utworzenie transakcji w linq do sql. Umieściłem komentarze w kodzie, w którym chcę, aby transakcja miała miejsce.Jak utworzyć transakcję LINQ na SQL?
var created = false;
try
{
var newCharacter = new Character();
newCharacter.characterName = chracterName;
newCharacter.characterLevel = 1;
newCharacter.characterExperience = 0;
newCharacter.userUsername = userUsername;
newCharacter.characterClassID = ccslst[0].characterClassID;
//Open transaction
ydc.Characters.InsertOnSubmit(newCharacter);
ydc.SubmitChanges();
foreach (var ccs in ccslst)
{
var cs = new CharacterStat();
cs.statId = ccs.statID;
cs.statValue = ccs.statValue;
cs.characterID = newCharacter.characterID;
ydc.CharacterStats.InsertOnSubmit(cs);
}
var ccblst = ydc.ClassBodies.Where(cb => cb.characterClassID == newCharacter.characterClassID);
foreach (var ccb in ccblst)
{
var charBody = new CharacterBody();
charBody.bodyId = ccb.bodyId;
charBody.bodyPartId = ccb.bodyPartId;
charBody.characterID = newCharacter.characterID;
ydc.CharacterBodies.InsertOnSubmit(charBody);
}
ydc.SubmitChanges();
created = true;
//Commit transaction
}
catch (Exception ex)
{
created = false;
//transaction Rollback;
}
return created;
EDIT: Zapomniałem wspomnieć, że YDC jest mój datacontext
Nie wiem o składni, muszę umieścić mojego kodu w tym zakresie: using (TransactionScope ts = new TransactionScope()) { // mój kod } – Drahcir
Dodałem go do kodu i wkleiłem jako przykład. – tvanfosson
Udało się, dziękuję – Drahcir