[英]NHibernate Projection With Null Many-To-One
criteria.CreateAlias("ChildObject", "c");
IProjection fullProjection = Projections.ProjectionList()
.Add(Projections.Property("Item"), "Item")
.Add(Projections.Property("c.SubItem"), "ChildObject.SubItem")
該對象具有Item和ChildObject屬性。
ChildObject具有一個SubItem屬性。
NHibernate可以使用此投影來成功查詢和列出所有帶有ChildObject的對象。
但是,在某些行上,ChildObject可以為null。 這種預測似乎完全跳過了它們。 他們從來沒有做到我的變形金剛。 我認為NHibernate會按要求做出這些預測,使其在標准中不為空。
因此,盡管我可以通過以下方式實現它的智能化:
Projections.Conditional(Restrictions.Eq("ChildObject", null), nullProjection, fullProection)
在nullProjection根本沒有投影ChildObject的地方,但是它只是抱怨...。
Both true and false projections must return the same types.
無論如何,要進行此投影並獲取可為空的值? 還是我必須要做兩個單獨的查詢?
這與左聯接而不是內部聯接有關。
criteria.CreateAlias("ChildObject", "c");
將創建SQL語句作為內部聯接,但使用...。
criteria.CreateAlias("ChildObject", "c", LeftJoin);
強制執行左聯接,並在不存在該值時進行處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.