我正在开发我的第一个使用EF4的大型项目,并且在实现某些业务场景时一直在考虑并发情况。我知道EF通过将并发模式设置为Fixed-on-entity属性,内置了对乐观并发的支持。在大多数情况下,这似乎已经足够了。我想知道的是:
我试图记住,在SQL中发出Begin Transaction/Commit事务块是否会自动锁定所涉及的表,这意味着它将强制执行上面提到的悲观场景。如果是,在TransactionScope中包装这两个EF操作是否会获得类似的结果?
TransactionScope 当不使用多个上下文时?好吧,也许你需要在一个事务过程中获得一个服务器生成的密钥(想想 SCOPE_IDENTITY SaveChanges() 必须作为一个整体成功或失败。
TransactionScope
SCOPE_IDENTITY
SaveChanges()