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

时间:2023-03-08 19:04:06
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));