在阅读N-Tiered Applications上的文章时,我发现了有关并发令牌和更改跟踪信息的信息:
要理解的另一个重要概念是 默认生成的实体支持序列化,它们 更改跟踪信息存储在ObjectStateManager中(a ObjectContext的一部分,它不支持序列化。
我的问题有三个:
DbContext
时是否有同样的事情?Repository
语句中的using
类中,那么当程序离开using
语句时关闭数据库连接会删除任何选项改变追踪?答案 0 :(得分:1)
DbContext
只是ObjectContext
的包装,它通过ChangeTracker
属性(返回DbChangeTracker
)和特定实体通过调用Entry
方法公开更改跟踪信息(返回{ {1}})。DbEntityEntry<T>
时,它必须在数据库上执行哪些操作。它跟踪您对实体所做的更改,因为您已将它们加载到当前上下文实例中。并发令牌解析数据库中的乐观并发=>它验证另一个进程/线程/用户/上下文实例未在SaveChanges
期间更改您的上下文将要修改的相同记录。