1
說我有2個表如下:NHibernate的定製IProjection運行子查詢
MainTable (
Id int,
Name varchar(100)
)
RelatedTable (
Id int,
Value int,
MainTableId int -- foreign key
)
有MainTable
和RelatedTable
之間的一對多的關係,使得RelatedTable.MainTableId
引用MainTable.Id
。
我想要使用一個自定義IProjection如下:
sess.CreateCriteria<MainTable>()
.SetProjection(
Projections.ProjectionList()
.Add(Projections.Property("Id"))
.Add(Projections.Property("Name"))
.Add(new SumOfValuesProjection(/* arguments??? */))
)
.List();
這會生成以下SQL:
select
Id,
Name,
-- how to get this sub-query from IProjection?
(select sum(Value)
from RelatedTable
where RelatedTable.MainTableId = MainTable.Id) as SumOfValues
from MainTable
這是什麼,我試圖做的只是一個小例子。就我而言,可能有數十個這樣的子查詢列。它們都使用聚合函數,但不一定都使用sum()
。
我期待創建一個自定義IProjection
但我不太確定從哪裏開始。
任何幫助將不勝感激。
很好用!感謝您的建議。 – dana
很好,如果有幫助;) –