私はしばらくこれについて頭を悩ませてきたので、ここに投稿することにしました。
親オブジェクトと子オブジェクトの間に 1->Many 関係があるとします。次に、親オブジェクトをコンテキストからリスト オブジェクトに取得しました。次に、各子レコードに「仮想」プロパティを設定して、上記のリストを繰り返し処理します。「仮想」プロパティは、ステータスを定義する定義された列挙型です。つまり、新規、未変更、無効です。エンティティが実装する抽象クラスのプロパティとして実装されます。
これが完了したら、ステータスが「新規」であるすべての子オブジェクトの数を取得したいと考えています。
Parent.Sum(p => p.Child.Where(c => c.Status == New).Count())
最初の問題は、これが親レコードごとに 1 回データベースに戻り、リンクされたすべての子レコードを取得することです。
2 つ目の問題は、Status フィールドが実際のデータベース フィールドではないため、値がすべて列挙の既定値になっていることです。
これについての助けをいただければ幸いです。
編集:
まず、データベースに Status 列が必要ありません。必要に応じて簡単に追加できますが、永続化したいものではありません。
これはおそらく、私が提供できる完全なコードの最良のサンプルです。
List<Parent> parents = myDB.Parents.ToList();
foreach(Parent parent in parents)
{
foreach(Child child in parent.Child)
{
if (condition1)
{
child.Status == Statuses.Status1;
}
else if (condition2)
{
child.Status == Statuses.Status2;
}
else if (condition3)
{
child.Status == Statuses.Status3;
}
}
}
Console.WriteLine(Parent.Sum(p => p.Child.Where(c => c.Status == New).Count()))