实体框架ObjectMaterialized为匿名对象

时间:2014-03-26 23:20:21

标签: c# entity-framework

ObjectMaterialized仅在创建的对象是实际类时调用,或者它可能具有映射;不确定是哪一个。

如果我使用匿名对象,则永远不会调用ObjectMaterialized委托。

var obj = context.Set<MyType>().Select( x =>
{
    Prop = x.Prop1,
});

有没有办法让匿名类型调用ObjectMaterialized委托?

目前我正在做一个解决方法,我在查询.ToList()之前选择匿名类型以确保它被调用。

1 个答案:

答案 0 :(得分:1)

看起来不像documentation

  

从数据中的数据创建新实体对象时发生   source作为查询或加载操作的一部分。

     

在所有标量,复杂和引用之后引发此事件   已在对象上设置属性,但在集合之前   加载。如果对象中存在具有相同键值的对象   上下文,实体框架将不会重新创建对象和此   事件不会被提出。

看起来你将无法直接调用事件处理程序 - ObjectMaterializedEventArgs构造函数被声明为internal:(