#region 廷迟加载
/// <summary>
/// 廷迟加载数据访问对象
/// </summary>
protected Dictionary<string, dynamic> delayLoadObjectList = new Dictionary<string, dynamic>();
/// <summary>
/// 廷迟加载数据访问对象
/// </summary>
public void AddDelayLoadObject(string key, dynamic dalObject)
{
if (this.delayLoadObjectList.ContainsKey(key))
{
this.delayLoadObjectList[key] = dalObject;
}
else
{
this.delayLoadObjectList.Add(key, dalObject);
}
}
public void DelayLoadList<T>(string propertyName, object queryValue, string fkPropertyName) where T : BaseModel
{
if (this.delayLoadObjectList.ContainsKey(propertyName))
{
PropertyInfo piSelf = this.GetType().GetProperty(propertyName);
if (piSelf != null)
{
if (piSelf.GetValue(this, null) == null)
{
PropertyInfo piFK = typeof(T).GetProperty(fkPropertyName);
if (piFK != null)
{
TableFieldAttribute[] paArray = piSelf.GetCustomAttributes(typeof(TableFieldAttribute), true) as TableFieldAttribute[];
if (paArray != null && paArray.Length > 0)
{
paArray[0].Property = piFK;
if (string.IsNullOrEmpty(paArray[0].Name))
{
paArray[0].Name = piSelf.Name;
IList<QueryExpression> queryExpressionList = new List<QueryExpression>();
queryExpressionList.Add(new QueryExpression()
{
FieldName = paArray[0].Name,
FieldValue1 = queryValue,
Operation = QueryOperation.Equal
});
IList<T> lst = this.delayLoadObjectList[propertyName].GetEntityList(0, 0, queryExpressionList, null);
piSelf.SetValue(this, lst, null);
this.delayLoadObjectList.Remove(propertyName);
}
}
}
}
}
}
}
#endregion