そのため、リポジトリを呼び出して、FluentNHibernate を使用して、複雑なオブジェクト グラフのルート オブジェクトを取得します。しかし、一部のサブレベル オブジェクトでは、すべての要素を取得するのではなく、日付パラメーターが特定の条件に一致する要素のみを取得したいと考えています。以下のコードでは、下位レベルの Order オブジェクトをこのように OrderTime フィールドでフィルタリングします。
つまり、すべてのユーザーを含むすべてのユーザーグループを取得したいのですが、各ユーザーの注文オブジェクトには、特定の日付または日付範囲からの注文のみが含まれます。
では、このオブジェクト グラフを取得するためのオプションは何ですか? 遅延読み込みはしたくありません。変更されることのないいくつかの異なる取得条件を指定したいだけです。したがって、最後に提案されているように、それらはリポジトリの個別の機能になる可能性があります。しかし、これらのメソッドをコーディングするにはどうすればよいでしょうか。これらの条件を指定するにはどうすればよいでしょうか。
オブジェクト:
public class UserGroup
{
public int Id;
public IList<User> Users;
}
public class User
{
public int Id;
public string Name;
public IList<Order> Orders;
}
public class Order
{
public int Id;
public decimal Price;
public System.DateTime OrderTime;
}
リポジトリ:
public class UserGroupRepository
{
public List<UserGroup> GetAll()
{
using (ISession session = FNH_Manager.OpenSession()) {
dynamic obj = session.CreateCriteria(typeof(UserGroup)).List<UserGroup>();
return obj;
}
}
}
可能性のある新しいリポジトリ メソッド: ?
public List<UserGroup> GetAll_FilterOrderDate(System.DateTime _date)
{
}
public List<UserGroup> GetAll_FilterOrderDate(List<System.DateTime> _dates)
{
}