Pregunta Múltiples SubmitChanges y retrotracción de transacción utilizando Linq to SQL


Estoy usando TransactionScope para enviar datos en Linq a SQL. Mi pregunta es, si uso múltiples SubmitChanges en el mismo ámbito, ¿se retrotraerá todo el alcance en caso de error o solo los cambios realizados después del último SubmitChanges? Por ejemplo:

using (TransactionScope trans = new TransactionScope())
{
    using (dbDataContext db = new dbDataContext())
    {
        try
        {
            //do some insert
            db.SubmitChanges();

            //do some updates
            db.SubmitChanges();

            trans.Complete();
        }
        catch(Exception ex){}
    }
}

Si la actualización SubmitChanges arroja una excepción, ¿la inserción de SubmitChanges también se retrotraerá?


10
2017-10-28 11:20


origen


Respuestas:


TODOS los cambios se retrotraerán, no solo el de los últimos SubmitChanges ().

A menudo necesitará utilizar este patrón cuando tenga datos que dependen de otros datos, por ejemplo, si necesita crear un objeto y obtener su identificación generada automáticamente para hacer otra cosa (aunque L2SQL lo admite con una llamada a SubmitChanges). la mayoría de los escenarios con solo crear el objeto, pero estoy divagando ...).


8
2017-10-28 11:23