我使用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