如何从数据库中获取n个对象而不获取nhibernate

时间:2016-10-25 10:20:00

标签: c# performance nhibernate fluent-nhibernate

如何在不获取nhibernate中的所有对象的情况下从数据库中获取n个对象?

这是一个例子

假设我有这个域实体

public class Contract
{
    Ilist<Asset> Assets{get; set;}
}

public class Asset
{
    Ilist<Contract> Contracts{get; set;}
}

在上面的例子中我有很多关系,如果我有一个查询喜欢这个

IList<Asset> = contract.Assets.take(10);

在这种情况下,它将带来数据库中的所有资产,然后它将花费其中10个播种,我怎么能强迫开发人员不直接使用contract.Assets并告诉nhibernate只直接从数据库中提取这10个元素

1 个答案:

答案 0 :(得分:0)

IList<Asset> = contract.Assets.take(10);

不是查询,它只是访问属于IList或者代理的属性。据我所知,你不能像你想的那样做。你必须像这样查询数据库:

Session.Query<Asset>().Where(a => a.Contracts.Any(c => c.Id == myContractId)).Take(10);