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 是这样实现的