如何从数据库中获取n个对象,而不需要在nhibernate中获取所有对象

本文关键字:对象 获取 不需要 nhibernate 数据库 | 更新日期: 2023-09-27 18:14:43

如何从数据库中获取n个对象而不需要在nhibernate中获取所有对象?

下面是一个例子

假设我有这个域实体

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个元素

如何从数据库中获取n个对象,而不需要在nhibernate中获取所有对象

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

不是一个查询,它只是访问一个属性,它是一个列表,或者更确切地说是一个代理。据我所知,你不能随心所欲。您必须像这样对数据库进行查询:

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