將投影添加到nhibernate查詢的最佳方式是什麼?nhibernate查詢可能有或沒有1個或多個投影設置?調用.SetProjection()似乎取代了可能已經存在的投影。向nhibernate查詢添加投影
爲了給出一點背景環境,我正在使用找到的分頁結果擴展方法的一個版本here,我已經到了一個點,在那裏我傳遞了一個具有明確投影的查詢,但該投影被剝離了count條件因爲調用.SetProjection(Projections.RowCountInt64)。
將投影添加到nhibernate查詢的最佳方式是什麼?nhibernate查詢可能有或沒有1個或多個投影設置?調用.SetProjection()似乎取代了可能已經存在的投影。向nhibernate查詢添加投影
爲了給出一點背景環境,我正在使用找到的分頁結果擴展方法的一個版本here,我已經到了一個點,在那裏我傳遞了一個具有明確投影的查詢,但該投影被剝離了count條件因爲調用.SetProjection(Projections.RowCountInt64)。
我不確定它是否能正常工作,因爲我現在無法檢查它,但爲什麼不使用類似ProjectionList
這樣的方法來實現這個技巧?
var criteria = ...
var projectionList = Projection.ProjectionList();
// Add you projections to the projectionList
projectionList.Add(yourQueryProjection);
projectionList.Add(Projections.RowCountInt64());
criteria.setProjection(projectionList);
我沒有這樣做,所以你可能要返工有點,但我相信你可以做這樣的事情
.ProjectionCriteria.Add(Projections.RowCountInt64)
因爲它可能沒有任何突出設置你可能要檢查什麼ProjectionCriteria財產就是這種情況。它可能爲空。
我正在使用ICriteria,所以我實際上沒有.ProjectionCriteria可用於我。我想我可以通過一個實際的標準實現,但是我需要每個ICreiteria實現的擴展方法。任何其他想法? – mockobject 2009-07-10 17:39:43
值得注意的是,一旦您選擇使用投影,您必須指定您希望查詢返回的每一列。我對NH的經驗是有限的,但目前似乎沒有辦法告訴ICriteria API你想選擇與你正在選擇的實體相關的所有列,然後向查詢添加一個額外的投影。 。但是這似乎並不是一個非常困難的擴展方法添加到項目(或ICriteria API) – MoMo 2013-02-10 19:33:53