Поэтому я буду вызывать хранилище для извлечения корневого объекта графа сложного объекта, используя 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;
}
Repository:
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)
{
}