0

我正在使用实体框架,它的某些部分功能对我来说仍然不清楚。比较难理解的主要有:

  • SubmitChanges过程;
  • 调用更新-删除-插入方法的顺序;
  • 对此事的认知ObjectStateManager
  • 分离EntityState,它是提交过程的一部分;

提供您的解释或提供一些有用的链接。

4

1 回答 1

3

ObjectStateManager是一个暴露被跟踪实体信息的组件。每个可以被 EF 持久化的实体都必须被跟踪 = 附加。EF 不知道分离的实体(它们不被跟踪),因此在调用时不会保存它们的更改SaveChanges(EF 中没有SubmitChanges)。跟踪包括维护有关实体或关系的初始状态以及对它们所做的更改的信息。它还包含实体的全局状态。

调用 SaveChanges 的过程取决于配置 EF 以跟踪更改的方式、获取实体的方式以及所做的更改。

更改跟踪是一项功能,它允许 EF 跟踪应用于附加到上下文的实体上的更改(默认情况下,查询加载的每个实体都是附加的)。EF 包含更改跟踪的版本:

  • 快照 - 仅适用于 POCO。EF 不会跟踪实体的更改,但是当您调用SaveChanges它时,它会比较实体的存储状态(在加载实体时获得)和实体中的当前数据并相应地设置其状态。
  • 动态 - 基于 EntityObject 的实体本机,并通过 POCO 的动态代理实现。对附加实体的每次更改都会触发跟踪条目的更改并相应地设置实体状态。当你打电话SaveChanges时,状态已经设置好了。

数据修改操作的顺序是EF内部实现。基本顺序由描述实体之间依赖关系的映射定义。

于 2011-11-14T13:25:53.860 回答