【发布时间】:2011-03-28 20:24:06
【问题描述】:
我想动态自定义一些 POCO 类来覆盖我自己的虚拟成员,以便能够编译 LINQ to Entities 查询。我知道ObjectMaterialized 事件,但这发生在类实例化之后。我希望能够自己创建代理,覆盖我想要的虚拟成员,然后传递给 EF,这可能吗?
想象一下下面的 POCO 类:
public class Consumer {
/* That´s a virtual property with an association in EF */
public virtual ICollection <Message> Messages { get; set; }
/* That´s the business logic I would like to optimize. */
public virtual Message GetMyLatestMessage()
{
return Messages.Where(m => m.Writer != null && m.Writer.ID == ID && m.Type == "Message")
.OrderByDescending(m => m.Date)
.Take(1)
.FirstOrDefault();
}
}
当我对 EF 4 使用此代码时,GetMyLatestMessage() 中的表达式变成了一个 SQL 查询,但我想预编译这些表达式,因为其中一些表达式每次解析都很慢。
【问题讨论】:
标签: entity-framework-4 linq-to-entities poco