【问题标题】:Implicit Transaction in Entity Frmework 6 DbContext.SaveChanges()实体框架中的隐式事务 6 DbContext.SaveChanges()
【发布时间】:2014-07-01 12:14:01
【问题描述】:

根据documentation,EF6 在事务中隐式包装ObjectContext.SaveChanges()DbContext.SaveChanges() 上的文档说 nothing 关于交易。

当我尝试使用 SQL Server 测试 DbContext.SaveChanges() 时,我在 SQL 分析器中看到了我的几个插入,并且根本没有任何事务操作。开始时有一个“审核登录”,包含“设置隐式事务关闭”。

我是否遗漏了一些配置值,或者这种行为是代码优先中的“设计”?

【问题讨论】:

    标签: transactions ef-code-first entity-framework-6


    【解决方案1】:

    SaveChanges 确实在一个事务中执行,保证。我认为 DbContext 上的 MSDN 文档没有提到这一点是一个很大的遗漏。但是,无论如何,它实际上毫无用处。 ADO.Net Entity Framework 博客是您的理想去处。

    默认情况下,Sql Server Profiler 不记录事务事件。如果你想看到那些你必须在开始新的跟踪时选择它们,例如:

    【讨论】:

    • 我怀疑我们的基础设施有问题。我用一个实体和唯一键约束创建了新的干净上下文,它在 SaveChanges() 期间被包装在事务中。
    • 偶尔有外部事务已经打开,并且在 saveChanges() EF 检测到它并且不会创建嵌套的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多