ObjectMaterialized
仅在创建的对象是实际类时调用,或者它可能具有映射;不确定是哪一个。
如果我使用匿名对象,则永远不会调用ObjectMaterialized
委托。
var obj = context.Set<MyType>().Select( x =>
{
Prop = x.Prop1,
});
有没有办法让匿名类型调用ObjectMaterialized
委托?
目前我正在做一个解决方法,我在查询.ToList()
之前选择匿名类型以确保它被调用。
答案 0 :(得分:1)
看起来不像documentation:
从数据中的数据创建新实体对象时发生 source作为查询或加载操作的一部分。
在所有标量,复杂和引用之后引发此事件 已在对象上设置属性,但在集合之前 加载。如果对象中存在具有相同键值的对象 上下文,实体框架将不会重新创建对象和此 事件不会被提出。
看起来你将无法直接调用事件处理程序 - ObjectMaterializedEventArgs构造函数被声明为internal:(