我有一个使用实体框架的Web应用程序 - 我们使用TransactionScope类来提供环境事务.
有没有办法告诉EF使用标准T-SQL事务优先于DTC事务?我们经常在一个EntityContext和一个TransactionScope实例中对不同的表进行大量查询,但是这似乎总是将事务提升到DTC
我举了一个简短的例子,见下文.对单个表的查询正确地启动了一个T-SQL事务并且在连接SPID 54上然后查询到ContactUs表并且EF在另一个连接(SPID 53)上执行此操作,该连接具有促进事务的连接效果到DTC交易.**
using (MyEntities DB = new MyEntities())
{
using (TransactionScope t = new TransactionScope())
{
DB.Individual.First().EmailAddress = "bob" + DateTime.Now.Second.ToString() + "@bob.com"; // done on connection 54
DB.ContactUs.First(); // done on connection 53 thus promoting the transaction!!
DB.SaveChanges();
t.Complete();
}
}
Run Code Online (Sandbox Code Playgroud)