2016-03-14 69 views
0

我在写,因为目前我正试图在示例类上实现对象更改跟踪。我开始使用代理,这种方法符合我的需求。 定义一个类,其中方法和属性被定义为虚拟的,然后代理创建适合我。实体框架 - 跟踪非虚拟属性的更改

但除此之外,我非常好奇实体框架(使用代码优先方法)如何设法跟踪对象的属性未定义为虚拟的更改。

我明白,创建一个代理(没有定义接口; ef不需要)是不可能的。那EF如何跟踪变化?如果我是对的,并且不可能创建代理,那么它是如何工作的?

是否将保存操作中的对象状态与数据库进行比较,或者获取更改?

感谢您的回复!

回答

0

对象在上下文中后有2个状态副本。它也用于乐观并发。

EDIT
这意味着,该实体我修饰以它的拷贝等属性由属性的对象进行比较。

+0

这是否意味着,该实体将我修改的对象与属性的属性按属性进行比较? – tomek

+0

是的。您还可以通过GetModifiedProperties(查看MSDN)检索修改后的属性的集合。考虑一下这个实现,比较两个值可能比检查一个布尔值要慢一些,但是可能使用代理实现一个实现(访问一个覆盖对象,处理和检查一个布尔值)可能比保存时比较属性要慢。 – bubi