外部キー関係のない 2 つのテーブル (Document と Message) がありますが、テーブル Message には Document の id 列が列として含まれています (悪い設計、私は知っています..)
テーブル ドキュメント: DocId、名前
表メッセージ: MessageId、DocId、Value
1 つのドキュメント オブジェクトは 0 個以上の 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])' メソッドを認識せず、このメソッドをストア式に変換できません。
このようなクエリを作成するにはどうすればよいですか?