考虑下面的简化类,我们假设:
class Parent { public IList<Child> Children { get; set; } public Child OldestChild { get { return Children.OrderByDescending(c => c.Age).FirstOrDefault(); } }
使用NHibernate和Repositories时,是否有一些最佳实践方法可以满足两者:
a)应该通过聚合根(父)选择最老的孩子 - [即。不通过例如独立查询子表。使用父ID的ChildRepository]
b)应避免将整个子集合加载到内存中(理想情况下,最老的子查询应由DB处理)
这似乎既可能又容易,但我没有看到实现它的明显方法。可能我错过了什么?
我正在使用NHibernate 2.1,所以解决方案很好,虽然很快就会升级到3。
答案 0 :(得分:2)
我会在您的存储库上创建一个专门的方法,它返回给定父级的最老的子级。
答案 1 :(得分:2)
您可以使用公式映射OldestChild。看一下这个,将一个类映射到一个公式:http://blog.khedan.com/2009/01/eager-loading-from-formula-in.html