EF6打破“无法开始分布式事务”

时间:2014-08-06 21:03:19

标签: sql-server-2008-r2 entity-framework-6.1

我在服务器上运行了多个网站。这些站点访问本地数据库,并在数据库中调用链接服务器上的存储过程。

除了正在运行Entity Framework 6.1.1的网站外,所有网站都运行良好。

调用完成后,我们收到错误:The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "___" was unable to begin a distributed transaction.

此时运行的代码是使用.tt文件自动生成的......

return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("procname", param1, param2, param3, param4);

如上所述,这适用于旧版本的EF。 (这不是MSDTC配置的问题。)

在此页面(Working with Transactions (EF6 Onwards))上,它说:

  

从EF6 Database.ExecuteSqlCommand()开始,默认情况下会将命令包装在事务中(如果尚未存在)。此方法存在重载,允许您根据需要覆盖此行为。同样在EF6中,通过诸如 ObjectContext.ExecuteFunction()之类的API执行模型中包含的存储过程也是一样的(除了默认行为暂时不能被覆盖

我被困了吗?我是否需要恢复到Entity Framework 5?

0 个答案:

没有答案