Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq NHibernate查询映射集合_Linq_Nhibernate_Paging_Linq To Nhibernate - Fatal编程技术网

Linq NHibernate查询映射集合

Linq NHibernate查询映射集合,linq,nhibernate,paging,linq-to-nhibernate,Linq,Nhibernate,Paging,Linq To Nhibernate,在我的ASP.NET web应用程序中,我使用NHibernate来持久化我的“用户”实例,其中每个实例都有一个“条目”集合。这是一个典型的一对多映射,它工作得很好。条目的映射代码如下所示: <bag name="Entries" cascade="all-delete-orphan"> <key column="UserID" /> <one-to-many class="MyApp.Entities.Entry, MyApp.Entities" /&

在我的ASP.NET web应用程序中,我使用NHibernate来持久化我的“用户”实例,其中每个实例都有一个“条目”集合。这是一个典型的一对多映射,它工作得很好。条目的映射代码如下所示:

<bag name="Entries" cascade="all-delete-orphan">
   <key column="UserID" />
   <one-to-many class="MyApp.Entities.Entry, MyApp.Entities" />
</bag>
var query = from entry in Session.Linq<Entry>()
                    where entry.User == currentUser
                    select entry;
query.Skip(pageNum * pageSize).Take(pageSize).ToList();
J4I:当然,我在映射文件中使用延迟加载


提前谢谢你

集合上的LINQ将始终是LINQ to对象,因为它们不实现IQueryable,所以您将加载内存中的所有内容


查询是目前唯一可能的方法。

重要提示:在此期间,我发现示例linq表达式会生成非常难看的SQL代码,并实际使用外部左连接来比较“User”属性。然而,升级到NH3和嵌入式linq提供程序解决了这个问题,并输出了更优化的代码!所以如果你考虑使用LIQ2NHiBiNET-GO为NH3!NH3 linq提供者仍然是这样吗?是的,提供者位于查询引擎的顶部;收款管理没有改变。您可以对实体集合执行LINQ查询,但不能直接对检索到的对象执行LINQ查询。感谢您的确认。这有点令人不快,因为这将使LINQ的使用更加一致。我猜这会导致集合中的脏跟踪等问题;是吗?我认为这是可以实现的,但是有几个设计挑战需要克服。
myGrid.DataSource = currentUser.Entries.Skip(pageNum * pageSize).Take(pageSize).ToList();