Nhibernate HQL 匿名类(严格说是map的使用以及构造函数的使用

1.map的使用

var hql=string.Format(@"select new map(
tc.LimitIndexType as LimitIndexType,
tc.LimitScope as LimitScope,
tb.Id as Id
)
from BasLimitConfig tb,BasProductGroup ta ,BasLimitType tc 
where tb.LimitDim1Id =ta.Id and tb.LimitDim2Id = tc.Id
");

//这个是我框架的封装其实就是session.CreateQuery
var list2 = Dao.FindList<object>(info);

foreach (System.Collections.Hashtable entityObj in list2)
{
var oField = entityObj.GetEnumerator();
while (oField.MoveNext())
{
string keyName = oField.Key.ToString();
object keyValue = oField.Value;
}
}

2.构造函数的使用

var hql= string.Format(@"select new BasLimitConfig(tc.LimitIndexType,tc.LimitScope,tb)

from BasLimitConfig tb,BasProductGroup ta ,BasLimitType tc 
where tb.LimitDim1Id =ta.Id and tb.LimitDim2Id = tc.Id
");

实体的构造函数如下(非缺省)

public BasLimitConfig(int limitIndexType,int limitScore,BasLimitConfig b)
{

LimitIndexType = limitIndexType;
LimitScope = limitScore;
LimitConditionId = b.LimitConditionId;
LimitTypeId = b.LimitTypeId;
LimitTypeName = b.LimitTypeName;
LimitDim1Id = b.LimitDim1Id;
LimitDim1Value = b.LimitDim1Value;
LimitDim2Id = b.LimitDim2Id;
LimitDim2Value = b.LimitDim2Value;
LowerLimitValue = b.LowerLimitValue;
YellowLimitValue = b.YellowLimitValue;
RedLimitValue = b.RedLimitValue;
UpperLimitValue = b.UpperLimitValue;
TotalAmount = b.TotalAmount;
ActualIsAmount = b.ActualIsAmount;
PartIsAmount = b.PartIsAmount;
LimitBundleName = b.LimitBundleName;
Type = b.Type;
ProType = b.ProType;
BusiType = b.BusiType;
LimitType = b.LimitType;
LimitObjectType = b.LimitObjectType;
Limit1FullLevel = b.Limit1FullLevel;
Limit2FullLevel = b.Limit2FullLevel;
QuotaUsage = b.QuotaUsage;
}

//框架的封装内部调用 session.CreateQuery
var quotaList = Holworth.Utility.HraUtility.ListToT<BasLimitConfig>(Dao.FindList(treeInfo));

  

原文地址:https://www.cnblogs.com/kexb/p/5507241.html