したがって、FluentNHibernateを使用して複雑なオブジェクトグラフのルートオブジェクトを取得するリポジトリを呼び出します。しかし、いくつかのサブレベルのオブジェクトでは、すべての要素を取得するのではなく、日付パラメータが特定の条件に等しいオブジェクトのみを取得したいと考えています。以下のコードでは、OrderTimeフィールドで下位のOrderオブジェクトをこのようにフィルタリングします。FluentNhibernate、部分オブジェクトグラフを取得
意味すべてのユーザーを含むすべてのユーザーグループを取得するが、各ユーザーのOrdersオブジェクトには特定の日付または日付範囲の注文のみが含まれます。
このオブジェクトグラフを取得する方法に関する私の選択肢は何ですか?私は怠惰なローディングを望んでいない、私はちょうど変更されることはありません検索条件のいくつかを指定したい。したがって、最後に示唆されたように、リポジトリの別々の機能にすることができます。 しかし、どのようにこれらのメソッドをコーディングするのですか?これらの条件を指定する方法は?
オブジェクト:
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)
{
}
ありがとうございます!私はルートクエリが必要かどうか分からない。しかし、スタートアップ時に実行時全体に必要な完全なオブジェクトグラフをロードしています。注文を取得する私の目的は、それらをランタイムオブジェクトにロードすることであり、ロジックの範囲はそれらに依存します。おそらく、クエリでさまざまなサービスを呼び出すことによって、オブジェクトグラフをより段階的に構築することができました。もちろん、これらのサービスをコーディングする方法を学ぶ必要があります。しかし、それは私にはっきりと分かりません。私が今使っているものに似たリポジトリメソッドにいくつかのタイプのドリルダウン条件を入れることは可能ですか? – bretddog
@jonnii - これは興味深い実装です。使用しているFindAllメソッド/クエリクラスの実装に関する詳細をいくつか提供できますか? – csano