C# 实体框架知道何时被物化
我意识到在对象物化之后,ObjectContext上调用了一个事件ObjectMaterialized和gets 有没有办法知道某个对象当前正在被物化 对象可以通过从数据库刷新来重新物化。所以我不能简单地在我的类中有一个标志来指示我是否已经被物化,因为它可能再次发生C# 实体框架知道何时被物化,c#,.net,entity-framework-4,C#,.net,Entity Framework 4,我意识到在对象物化之后,ObjectContext上调用了一个事件ObjectMaterialized和gets 有没有办法知道某个对象当前正在被物化 对象可以通过从数据库刷新来重新物化。所以我不能简单地在我的类中有一个标志来指示我是否已经被物化,因为它可能再次发生 基本上,当设置某些属性时,我想知道它们是否被设置为来自数据库的新值(即,在具体化时),或者,如果应用程序正在从其他地方调用它们。如果我正确阅读了文档,那么在创建实体对象时,ObjectMaterialized事件只会触发一次,然后通
基本上,当设置某些属性时,我想知道它们是否被设置为来自数据库的新值(即,在具体化时),或者,如果应用程序正在从其他地方调用它们。如果我正确阅读了文档,那么在创建实体对象时,ObjectMaterialized事件只会触发一次,然后通过查询或加载操作从数据库加载
您可以使用ObjectStateManager跟踪对象更改,但我不知道它是否有助于您找到更改的来源。正如@BigL在回答中指出的那样,刷新实体时不会再次触发此事件。物化意味着创建一个实例,并且只会发生一次。刷新仅更新现有实例中的值并设置实体状态 您总是知道通过刷新来设置属性,因为您必须自己在指定的实体实例上触发该操作,以便可以控制在设置属性时打开或关闭逻辑所需的任何标志