EntityFramework知道何时实现

时间:2011-09-20 20:51:32

标签: c# .net entity-framework-4

我意识到在一个对象实现后,在ObjectContext上调用了一个ObjectMaterialized事件。

有没有办法知道某个对象当前何时被实现?

可以通过从数据库刷新来重新实现对象。所以我不能简单地在班上有一面旗帜,表明我是否已经实现了,因为它可能会再次发生。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

您始终知道通过刷新设置了属性,因为您必须在指定的实体实例上触发该操作,这样您就可以控制在设置属性时打开或关闭逻辑所需的标记。