代码之家  ›  专栏  ›  技术社区  ›  e36M3

实体框架4中的TransactionScope是否在不跨越多个上下文对象的情况下使用?

  •  1
  • e36M3  · 技术社区  · 14 年前

    我正在开发我的第一个使用EF4的大型项目,并且在实现某些业务场景时一直在考虑并发情况。我知道EF通过将并发模式设置为Fixed-on-entity属性,内置了对乐观并发的支持。在大多数情况下,这似乎已经足够了。我想知道的是:

    1. 我试图记住,在SQL中发出Begin Transaction/Commit事务块是否会自动锁定所涉及的表,这意味着它将强制执行上面提到的悲观场景。如果是,在TransactionScope中包装这两个EF操作是否会获得类似的结果?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Craig Stuntz    14 年前
    1. DB约束是 只有 可靠的解决方案,因为它是 只有 可以看到来自其他写入程序的未提交事务的解决方案。
    2. 不要假设SQL Server正在锁定表。它可能正在锁定行。
    3. 挥之不去的,未承诺的写作。这对于任何数据访问技术来说都是个坏主意。改为使用约束。

    TransactionScope 当不使用多个上下文时?好吧,也许你需要在一个事务过程中获得一个服务器生成的密钥(想想 SCOPE_IDENTITY SaveChanges() 必须作为一个整体成功或失败。