2010-09-17 7 views

Respuesta

2

Usted puede hacer esto en una base por DataContext/unidad de base de trabajo así:

using (var con = new SqlConnection(constr)) 
{ 
    con.Open(); 

    using (var tran = 
     new con.BeginTransaction(IsolationLevel.ReadUncommitted)) 
    { 
     using (var db = new MyDataContext(con)) 
     { 
      // You need to set the transaction in .NET 3.5 (not in 4.0). 
      db.Transaction = tran; 

      // Do your stuff here. 

      db.SubmitChanges(); 
     } 

     tran.Commit(); 
    } 
} 

Por supuesto se puede abstraer la creación y la comisión y la eliminación de la conexión y operación de distancia, pero este ejemplo va a trabajar .

Tenga en cuenta que esto no establecerá el nivel de aislamiento globalmente, solo para las sentencias LINQ que se ejecutan dentro del contexto de esa clase particular DataContext.

1

LINQ, estrictamente hablando, no es un lenguaje de consulta de base de datos. Es un lenguaje de consulta de dominio que se puede traducir a un lenguaje de consulta DB como SQL. Como tal, no puede usar solo Linq para establecer un nivel de aislamiento de base de datos.

Me gustaría ver las herramientas que le da su ORM; la mayoría, en algún nivel, implican un estilo de ADO SQLConnection y SQLTransactions. Debería poder exponer estos objetos dado el objeto de "sesión" de su ORM, para establecer niveles de aislamiento y ejecutar otros comandos de bases de datos no DML.