Como usar WITH (NOLOCK) em LINQ to SQL?
-
19-09-2019 - |
Pergunta
podemos usar SQL como esta:
SELECT * FROM student WITH(NOLOCK);
Como posso conseguir isso com o LINQ to SQL sem o uso de um TransactionScope
?
Solução
LINQ to SQL não tem qualquer mecanismo de fazer isso, mas você pode criar uma transação com um nível de isolamento específico. Olhada no código abaixo:
using (var con = new SqlConnection("constr"))
{
con.Open();
using (var transaction = con.BeginTransaction(
IsolationLevel.ReadUncommitted))
{
using (var context = new SchoolDataContext(con))
{
// HACK: Setting the context.Transaction is
// needed in .NET 3.5 (fixed in .NET 4.0).
context.Transaction = transaction;
var q = from s in context.Students select c;
}
}
}
Às vezes usando este tipo de isolamento é útil, ou seja, por razões de desempenho. Mas por favor, certifique-se de não fazer nenhuma criar, atualizar ou excluir operações (CUD) que utilizam este tipo de isolamento base de dados. É claro depende de suas situações, mas seus dados poderia entrar em um estado inconsistente.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow