J'ai un morceau de code qui implique plusieurs insertions mais j'ai besoin d'exécuter la méthode submitchanges avant de terminer l'insertion dans d'autres tables afin de pouvoir acquérir un Id. J'ai cherché sur Internet et je ne pouvais pas trouver comment créer une transaction dans linq à sql. J'ai mis des commentaires dans le code où je veux que la transaction ait lieu.Comment créer une transaction LINQ to 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: Vous avez oublié de mentionner que ydc est mon datacontext
Vous ne savez pas sur la syntaxe, dois-je mettre mon code dans ce champ: à l'aide (TransactionScope ts = new TransactionScope()) { // mon code } – Drahcir
Je l'ai ajouté à votre code et collé comme un exemple. – tvanfosson
Cela a fonctionné, merci – Drahcir