【问题标题】:Stored Procedure without transaction in Entity Framework实体框架中没有事务的存储过程
【发布时间】:2014-08-25 07:33:40
【问题描述】:

我在 Entity Framework 6 中调用一个存储过程,它可以在必要时创建数据库和表。它正在抛出错误;

消息“多语句事务中不允许 CREATE DATABASE 语句。\r\n多语句事务中不允许使用 ALTER DATABASE 语句。\r\n数据库“CoreSnapshotJS3”不存在。确保输入的名称正确。 "字符串

我不希望它在交易中,并用它来抑制交易

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

它仍然会引发错误。

如何停止自动交易?

【问题讨论】:

    标签: c# entity-framework transactions transactionscope


    【解决方案1】:

    我找到了办法:

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

    【讨论】:

    • 有没有办法在没有实际执行 DQL 的事务的情况下运行存储过程 - 选择。我也需要结果,而无需在存储过程中使用任何输出参数。
    • .net core 中没有TransactionalBehavior class :/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多