- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的类看起来像这样(我只包含相关属性):
public class Order
{
public virtual Customer Customer { get; set; }
public virtual IEnumerable<OrderLine> OrderLines { get; set; }
}
public class OrderLine
{
public virtual string Product { get; set; } // Simplified
}
现在我想要的是创建一个分离的条件来选择给定客户的所有订单,同时仅检索每个订单的前 10 个 OrderLine。第一部分很简单:
Customer someCustomerObject = ...;
var criteria = DetachedCriteria.For<Order>().Add(Restrictions.Eq("Customer", someCustomerObject);
但是我如何指示 NHibernate 为按上述标准检索到的每个订单急切地检索前 10 个订单行?
我尝试使用基于以下示例的过滤器(取自 Nhibernate 文档):
session.CreateFilter( lazyCollection, "").SetFirstResult(0).SetMaxResults(10).List();
但是当我将 Order.OrderLines
传递给 CreateFilter
方法时,它会先检索所有订单行,然后再检索前 10 个订单行,这不是我想要的.我还尝试将其与对 NHibernateUtil.Initialize
的调用结合使用,但无济于事。
如何为这个问题创建一个独立的标准?或者,如果这不是完全可行的,我如何为每个订单仅检索前 10 个结果,而不获取整个集合?
最佳答案
您可以在 Order 类的 NHibernate 映射文件中将 batch-size
属性设置为 10。通过这种方式,它会急切地加载集合的前 10 个元素并延迟加载其余元素。我会按如下方式映射集合:
<set name="OrderLines" table="OrderToOrderLine" batch-size="10">
<key column="OrderId"/>
<one-to-many class="OrderLine"/>
</set>
更多信息,请继续阅读:NHibernate Mapping - Collections
关于c# - NHibernate:获取具有子集合子集的多个实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2077568/
我以前使用过像 Netbeans 和 eclipse 这样的 IDE。 我在 friend 的电脑上下载了“Visual Studio Express 2013 for windows desktop
我正在尝试弄清楚如何在 GBA 大小的 EZ Flash 3 合 1 卡中对 PSRAM 进行编程。基本上重复 GBA Exploader 和其他程序所做的事情。 如果我选择一个 block 并对其进
Filter1=re.findall(r'',PageSource) Filter2=re.findall(r'',PageSource) Filter3=re.findall(r'(.*?).*?'
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为
我是一名优秀的程序员,十分优秀!