必要なアイテムだけを取得するための正しい where 句が見つからないようです。
私はディビジョンを持っています。これらにはカテゴリが含まれ、これらにはアイテムが含まれています。これらはクラスです:
public class Division {
public string Description { get; set; }
public List<Category> Categories { get; set; }
}
public class Category : IdEntity
{
public string Description { get; set; }
public Guid DivisionId { get; set; }
public List<Item> Items { get; set; }
}
public class Item
{
public Guid CategoryId { get; set; }
public DateTime Date { get; set; }
public string Description { get; set; }
}
私が必要としているのは、パラメータに Id を持つ部門、この部門のすべてのカテゴリ、および各カテゴリに特定の日付を持つアイテムです。
だから今私はこれをします:
public Division GetFullDivisionByIdAndDate(Guid id, DateTime date)
{
using (new ChangeTrackingScope(ChangeTracking.Disabled))
{
var divisionGraph = new Graph<Division>().Include(d => d.Categories.Select(c => c.Items));
var division = _divisionDL.GetFullDivisionByIdAndDate(id, divisionGraph, date);
return division;
}
}
そして、私が行うDLよりも
public Division GetFullDivisionByIdAndDate(Guid id, Graph<Division> graph, DateTime date)
{
using (var db = new ContextScope<DatabaseContext>())
{
var q = graph.ApplySetReferences(db.Context.Divisions).AsNoTracking();
return q.SingleOrDefault(p => p.Id == id);
}
}
ここでは、すべてのカテゴリを含む部門を取得します (これまでのところ非常に良い) が、すべてのアイテムも取得し、パラメーターとして指定された日付を持つアイテムのみが必要です。誰でもこれを行う方法を知っていますか?