我試圖從映射爲.HasMany()列表中添加和刪除元素,但NHibernate的執行一些奇怪的疑問在這個簡單的場景:流利NHibernate的一個一對多的插入/刪除問題
if (Profile.Artists.Any(x => x.Artist == artist))
{
Profile.Artists.Remove(Profile.Artists.Single(x => x.Artist == artist));
}
else
{
Profile.Artists.Add(new Artist { Artist = artist, User = User.Current.ID });
}
這個方法是通過一個事務來執行的。我得到的是一個系列爲整個集合SELECT語句:
SELECT ... WHERE artis0_.User=?p0;?p0 = 5
等等,然後NHibernate的嘗試更新檔案第一和第二的藝術家。雖然藝術家只能被刪除或插入(注意:反向()藝術家只能被插入並且不會被刪除)。
UPDATE user_profile SET UserFK = ?p0 ...
UPDATE user_artists SET User = null WHERE User = ?p0 AND User = ?p1 AND Artist = ?p2;?p0 = 5, ?p1 = 5, ?p2 = 16
映射像這樣做:
mapping.HasMany<Artist>(x => x.Artists)
.KeyColumn("User")
.Inverse()
.Cascade.All();
這些都沒有使任何意義對我來說,尤其是該系列的SELECT語句的。我在這裏做錯了什麼?
謝謝,但它並沒有解決與SELECT的問題。 – 2009-12-15 12:00:53