EntityFramework知道何时被物化

问题描述:

我知道有一个事件ObjectMaterialized在对象被物化之后在ObjectContext上被调用。EntityFramework知道何时被物化

有没有办法知道对象是什么时候目前正在物化?

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

基本上,当某些属性被设置时,我想知道它们是否被设置为数据库中的新值(即正在物化),或者应用程序是否从别处调用它们。

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

您可以跟踪与ObjectStateManager对象的变化,但我不知道,如果它可以帮助你找出变化的来源。

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

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