Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架知道何时被物化_C#_.net_Entity Framework 4 - Fatal编程技术网

C# 实体框架知道何时被物化

C# 实体框架知道何时被物化,c#,.net,entity-framework-4,C#,.net,Entity Framework 4,我意识到在对象物化之后,ObjectContext上调用了一个事件ObjectMaterialized和gets 有没有办法知道某个对象当前正在被物化 对象可以通过从数据库刷新来重新物化。所以我不能简单地在我的类中有一个标志来指示我是否已经被物化,因为它可能再次发生 基本上,当设置某些属性时,我想知道它们是否被设置为来自数据库的新值(即,在具体化时),或者,如果应用程序正在从其他地方调用它们。如果我正确阅读了文档,那么在创建实体对象时,ObjectMaterialized事件只会触发一次,然后通

我意识到在对象物化之后,ObjectContext上调用了一个事件ObjectMaterialized和gets

有没有办法知道某个对象当前正在被物化

对象可以通过从数据库刷新来重新物化。所以我不能简单地在我的类中有一个标志来指示我是否已经被物化,因为它可能再次发生


基本上,当设置某些属性时,我想知道它们是否被设置为来自数据库的新值(即,在具体化时),或者,如果应用程序正在从其他地方调用它们。

如果我正确阅读了文档,那么在创建实体对象时,ObjectMaterialized事件只会触发一次,然后通过查询或加载操作从数据库加载


您可以使用ObjectStateManager跟踪对象更改,但我不知道它是否有助于您找到更改的来源。

正如@BigL在回答中指出的那样,刷新实体时不会再次触发此事件。物化意味着创建一个实例,并且只会发生一次。刷新仅更新现有实例中的值并设置实体状态

您总是知道通过刷新来设置属性,因为您必须自己在指定的实体实例上触发该操作,以便可以控制在设置属性时打开或关闭逻辑所需的任何标志