[英]How to add multiple columns inside a single GroupProperty method of Nhibernate Projections Class
我正在使用Visual Studio2008。我正在嘗試在Nhibernate.Projections類的單個GroupProperty方法內添加多個列。 但是,但是我沒有獲得所需的輸出。 我嘗試過這樣的事情。
ICriteria Criteria = CreateCriteria("BaseCriteria");
projectionList.Add(Projections.GroupProperty(
Projections.SqlFunction("concat",
NHibernateUtil.String, Projections.Property("FirstName"),
Projections.Constant(' '),
Projections.Conditional(Expression.IsNotNull("LastName"),
Projections.Property("LastName"), Projections.Constant(String.Empty)))), "ClientName");
一般來說,除了與RowCount
, Sum
和GroupProperty
我們可以使用SqlGroupProjection
var projectionList = Projections.ProjectionList()
.Add(Projections.RowCount(), "RowCount")
.Add(Projections.Sum("Price"), "Price")
.Add(Projections.GroupProperty("StatusId"), "StatusId")
.Add(Projections.SqlGroupProjection(
"LastName + ' ' + FirstName as ClientName",
"LastName + ' ' + FirstName",
new string[] {"ClientName"},
new IType[] {NHibernate.NHibernateUtil.String})
, "ClientName")
別名“ ClientName”作為別名重復了幾次。不確定是否可以省略,因此建議全部使用它們
如此處所示, NHibernate GroupBy和Sum
那很容易變成
public class MyDTO
{
public virtual int RowCount { get; set; }
public virtual int Price { get; set; } // type depends on SUM result
public virtual int StatusId { get; set; }
public virtual string Name { get; set; }
}
與
.SetProjection(projectionList )
.SetResultTransformer(Transformers.AliasToBean<MyDTO>())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.