我从EF调用一个存储过程,它本身执行系统存储过程。
public virtual int MyFunctionImport()
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("MyFunction"); //calls a sql server system procedure
}
现在我收到错误,因为EF围绕函数执行包装事务:
无法在交易中执行该程序。
可以采取哪些措施来解决这个问题?
答案 0 :(得分:1)
似乎无法关闭交易,因为这是EF默认行为。
TransactionScope(TransactionScopeOptions.Suppress)
没有帮助。
我使用bcp service在我自己的存储过程中“外包”系统存储过程。
select @cmd = 'bcp "EXEC [//insert db name here].[sys].[//insert system procedure name here]" queryout "//insert folder name here"';
EXEC xp_cmdshell @cmd;
感谢更轻松的解决方案。