变更追踪的三种方式

1、快照

支持 POCO Entity。

把查询出来的 Entity 存储一个快照,修改 Entity 后和快照对比那些属性发生变化。

-- ORM 按需更新

 

2、代理

分为动态代理和静态代理两种方式 ,代理的实现原理

利用 virtual 特性进行属性重写 从而实现变更追踪。

支持 POCO Entity。

 

 静态代理 创建一个代理类继承 POCO ,然后通过代理类访问属性。

 动态代理 动态创建。

 

 

 

 get name -- ORM 延迟加载

 

set name --ORM 属性变更追踪 

 

1、2 EF 实现原理。

3、复杂实体

通过自定义 所有属性的 Get Set 访问器,达到变更追踪的目标。

不支持 POCO Entity。

 rafy 是这样实现的

posted @ 2019-11-14 10:18  zwsu  阅读(442)  评论(0编辑  收藏  举报