簡體   English   中英

空多對一的NHibernate投影

[英]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")

對象具有ItemChildObject屬性。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM