我有 2 个没有外键关系的表(文档和消息),但是表消息将文档中的 id 列作为一列(糟糕的设计,我知道..)
表文档:DocId、名称
表消息:MessageId、DocId、Value
一个文档对象可以有零个或多个 Message 对象
我想编写一个返回名为 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.List 1[BraArkivDataModel.DocumentSplitMessage] ToList[DocumentSplitMessage](System.Collections.Generic.IEnumerable
1[BraArkivDataModel.DocumentSplitMessage])' 方法,并且此方法无法转换为存储表达式。
我该如何编写这样的查询?