0

在阅读有关N-Tiered Applications的文章时,我发现了有关并发令牌和更改跟踪信息的信息:

另一个需要理解的重要概念是,虽然默认生成的实体支持序列化,但它们的更改跟踪信息存储在不支持序列化的 ObjectStateManager(ObjectContext 的一部分)中。

我的问题是三个方面:

  1. 使用时有没有相同的情况DbContext
  2. 如果与数据库的唯一交互是在语句中的Repository类中using,那么当程序离开using语句时关闭数据库连接是否会消除任何用于更改跟踪的选项?
  3. 这可以作为/与并发令牌一起使用吗?
4

1 回答 1

1
  1. 是的。DbContext只是包装器,它通过属性(returns )ObjectContext公开更改跟踪信息,并通过调用方法(returns )公开特定实体的更改跟踪信息。ChangeTrackerDbChangeTrackerEntryDbEntityEntry<T>
  2. 是的。关闭上下文将删除所有更改跟踪信息。
  3. 并发令牌和更改跟踪是两个完全不同的概念。更改跟踪告诉上下文当您调用时它必须对数据库执行哪些操作SaveChanges。它跟踪您在将实体加载到当前上下文实例后对实体所做的更改。并发令牌解决数据库中的乐观并发 => 它验证另一个进程/线程/用户/上下文实例没有更改您的上下文将在SaveChanges.
于 2013-01-17T10:02:59.570 回答