【发布时间】:2017-01-06 09:30:06
【问题描述】:
我有一个在数据库级别使用事务的存储过程(事务在存储过程本身内处理)。这意味着我需要告诉 Entity Framework 不要处理事务。
现在使用数据库优先模型,我可以导入存储过程并拥有一个自动生成的上下文类,如下所示:
public virtual int MyStoredProcedure()
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("MyStoreProcedure");
}
我可以将自己的方法添加到 DbContext 类中,如下所示:
public virtual int MyStoredProcedureWithoutTransaction()
{
this.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, "MyStoredProcedure")
}
我的问题是以下代码在事务管理方面是否也与MyStoredProcedureWithoutTransaction() 相同:
MyContext context = new MyContext();
context.Database.UseTransaction(null);
context.MyStoredProcedure();
如果是这样,我更喜欢使用第二个版本,因为它具有使用 Entity Framework 自动生成的代码的优势。
【问题讨论】:
-
您可能可以运行 Sql Server Profiler 来确认...
标签: c# sql-server entity-framework transactions entity-framework-6