如何在Entity Framework中执行ExecuteSqlCommand而不将其包含在事务中

时间:2016-04-13 20:42:59

标签: entity-framework entity-framework-6

我需要使用Entity Framework执行存储过程。

通常我称之为:

this.Context.Database.ExecuteSqlCommand("EXEC edi_UploadTransmission");

但是,此特定存储过程包括访问链接服务器。

由于EF在事务中包装ExecuteSqlCommand,因此它失败了,因为事务中不支持链接服务器(据我所知)。

有没有办法在不使用Entity Framework的情况下使用Entity Framework执行此存储过程?

2 个答案:

答案 0 :(得分:8)

TransactionalBehavior.DoNotEnsureTransaction作为ExecuteSqlCommand方法的第一个参数传递。

例如,

this.Context.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, "EXEC edi_UploadTransmission");

答案 1 :(得分:1)

我的建议是不要在代码的这一部分使用EF。您可以将EF与直接ADO.NET代码或其他ORM(如Dapper或Chain)自由组合。

https://github.com/docevaad/Chain/wiki/A-Chain-comparison-to-Dapper