我使用NHibernate与QueryOver API来查询我的域实体。问题是获得重复的结果。例如查询以下域时: NHibernate实体投影
我使用如下代码:
var list = Session.QueryOver<Post>()
.JoinQueryOver<Comment>(x => x.Comments)
.Where(c => c.Name == "Name")
.Take(5)
.List();
生成的SQL就会像下面:
SELECT Top(5) * FROM Posts p left outer join Comments c on p.Id = c.PostId
这里的问题是,左连接完成后产生记录集有多于5行。然后TOP
函数应用并削减结果。例如,如果第一篇文章有5条评论,我会得到这篇文章5次,不会得到其他人。
我知道它为什么会发生,并发现一个不错的post。 但有没有一个投影会告诉nhibernate从Post
实体中只选择列,而不是在select中添加来自Comment
实体的列?也许应该使用其他方法(不是JoinQueryOver)?
是的,在我的应用程序中,我以子查询结束了。是否有只从一张桌子上得到结果的错误? – Sly 2011-05-12 11:09:48
我不明白你的问题。我写的例子只返回一个表格,即“Posts”的结果。内部选择只对名称为“名称”的评论进行过滤 – psousa 2011-05-12 12:54:07
我想要类似于选择不同的帖子。*来自帖子p内部加入评论c – Sly 2011-05-12 13:06:32