如何使用实体框架执行系统存储过程

时间:2014-02-25 12:02:11

标签: sql-server entity-framework stored-procedures transactions system

我从EF调用一个存储过程,它本身执行系统存储过程。

public virtual int MyFunctionImport()
{
    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("MyFunction"); //calls a sql server system procedure
}

现在我收到错误,因为EF围绕函数执行包装事务:

  

无法在交易中执行该程序。

可以采取哪些措施来解决这个问题?

1 个答案:

答案 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;

感谢更轻松的解决方案。