实体框架中没有事务的存储过程

时间:2014-08-25 07:33:41

标签: c# entity-framework transactions transactionscope

我在Entity Framework 6中调用存储过程,可以根据需要创建数据库和表。它抛出了错误;

  

消息"多语句事务中不允许使用CREATE DATABASE语句。在多语句事务中不允许使用\ r \ nALTER DATABASE语句。\ r \ nDatabase' CoreSnapshotJS3'不存在。确保正确输入名称。"串

我不想在交易中使用它来压制交易

using (var transation = new TransactionScope(TransactionScopeOption.Suppress))
{
    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("spCreateSnapshotFromQueue", snapshotQueueIDParameter);    
}

它仍然会抛出错误。

如何停止自动交易?

1 个答案:

答案 0 :(得分:23)

我找到了一种方法:

var snapshotQueueIDParameter = new SqlParameter("SnapshotQueueID", entityId);
return _db.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction,
        "EXEC spCreateSnapshotFromQueue @SnapshotQueueID", snapshotQueueIDParameter);