Tengo un fragmento de código que implica varias inserciones pero necesito ejecutar el método de enviar cambios antes de terminar de insertar en otras tablas para poder adquirir una Id. He estado buscando a través de Internet y no he podido encontrar cómo crear una transacción en linq a sql. He puesto comentarios en el código donde quiero que se realice la transacción.¿Cómo crear una transacción 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: He olvidado mencionar que ydc es mi DataContext
No está seguro acerca de la sintaxis, no he puesto mi código en este ámbito: el uso de (TransactionScope ts = new TransactionScope()) { // mi código } – Drahcir
Lo agregué a su código y pegué como un ejemplo. – tvanfosson
Funcionó, gracias – Drahcir