【发布时间】:2012-08-21 09:11:00
【问题描述】:
我有 2 个没有外键关系的表(文档和消息),但表消息将文档中的 id 列作为一列(糟糕的设计,我知道..)
表格文件: 文档编号, 名称
表消息: 消息 ID, 文档编号, 价值
一个文档对象可以有零个或多个消息对象
我想编写一个查询,返回一个名为 DocumentWithMessages 的聚合对象的列表:
public class DocumentWithMessages
{
Document Document {get;set;}
List<Message> Messages {get;set;}
}
查询应该返回所有文档(有或没有消息列表)
我开始写这样的方法,但它给了我一个例外:
public ICollection<DocumentWithDocumentSplitMessages> GetSplitJobsWithMessages()
{
var messages = (from dm in ObjectContext.DocumentSplitMessages select dm).ToList();
var jobs = from d in ObjectContext.Documents
let msgs = messages.Where(dm => dm.DocID == d.DocID).ToList()
select new DocumentWithDocumentSplitMessages()
{
Document = d,
DocumentSplitMessages = msgs
};
return jobs.ToList();
}
例外是:
System.NotSupportedException : LINQ to Entities 无法识别方法 'System.Collections.Generic.List1[BraArkivDataModel.DocumentSplitMessage] ToList[DocumentSplitMessage](System.Collections.Generic.IEnumerable1[BraArkivDataModel.DocumentSplitMessage])' 方法,并且此方法无法转换为存储表达式。
如何编写这样的查询?
【问题讨论】:
-
能改代码,为什么不能改EF型号?
标签: c#-4.0 entity-framework-4 linq-to-entities