因此,我将使用 FluentNHibernate 调用存储库来检索复杂对象图的根对象。但是对于某些子级别的对象,我不想检索所有元素,而只想检索日期参数等于特定条件的那些元素。在下面的代码中,我希望通过 OrderTime 字段以这种方式过滤较低级别的 Order 对象。
这意味着我想检索所有用户组的所有用户,但每个用户的订单对象应仅包含来自特定日期或日期范围的订单。
那么关于如何检索此对象图,我有哪些选择?我不想延迟加载,我只想指定几个不同的检索条件,这些条件永远不会改变。所以它们可以是存储库的独立功能,就像最后建议的那样。但是我将如何对这些方法进行编码,如何指定这些条件?
对象:
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)
{
}