我意识到在一个对象实现后,在ObjectContext上调用了一个ObjectMaterialized事件。
有没有办法知道某个对象当前何时被实现?
可以通过从数据库刷新来重新实现对象。所以我不能简单地在班上有一面旗帜,表明我是否已经实现了,因为它可能会再次发生。
基本上,当设置某些属性时,我想知道它们是否被设置为数据库中的新值(即在实现时),或者应用程序是否从其他地方调用它们。
答案 0 :(得分:1)
如果我正确阅读文档,则 ObjectMaterialized 事件仅在创建实体对象时触发一次,然后通过查询或加载操作从数据库加载。
您可以使用 ObjectStateManager 跟踪对象更改,但我不知道它是否有助于您找到更改的来源。
答案 1 :(得分:1)
正如@BigL回答的那样,当刷新实体时,不会再次触发此事件。实现意味着创建一个实例,并且只会发生一次。刷新仅更新现有实例中的值并设置实体状态。
您始终知道通过刷新设置了属性,因为您必须在指定的实体实例上触发该操作,这样您就可以控制在设置属性时打开或关闭逻辑所需的标记。