<#
String myClassName=Config.RenderGenEntity?"TEntity":Table.Alias;
// 根据索引,增加多个方法
if(Table.Indexes!=null&&Table.Indexes.Count>0){
foreach (IDataIndex di in Table.Indexes){
if(di.Columns==null||di.Columns.Length<1)continue;
IDataColumn[] columns=Table.GetColumns(di.Columns);
String returnType=myClassName;
String action="Find";
String IsAll=String.Empty;
if (!di.Unique){
returnType=String.Format("EntityList<{0}>",myClassName);
IsAll="All";
action="FindAll";
}
StringBuilder sb1=new StringBuilder();
StringBuilder sb2=new StringBuilder();
StringBuilder sb3=new StringBuilder();
StringBuilder sb4=new StringBuilder();
StringBuilder sb5=new StringBuilder();
String[] Args=new String[columns.Length];
for(int i=0;i<columns.Length;i++)
{
IDataColumn Field=columns[i];
if(sb1.Length>0) sb1.Append(", ");
sb1.Append(Field.DataType.Name+" ");
String argName=Field.Alias.ToLower();
if(argName==Field.Alias) argName="__"+Field.Alias;
sb1.Append(argName);
Args[i]=argName;
if(sb2.Length>0) sb2.Append(", ");
sb2.Append("_."+Field.Alias);
if(sb3.Length>0) sb3.Append(", ");
sb3.Append(argName);
if(sb4.Length>0) sb4.Append("And");
sb4.Append(Field.Alias);
if(sb5.Length>0) sb5.Append("、");
if(!String.IsNullOrEmpty(Field.Description))
sb5.Append(Field.Description);
else
sb5.Append(Field.Alias);
}
#>
/// <summary>根据<#=sb5#>查找</summary><#
for(int i=0;i<columns.Length;i++)
{
#>
/// <param name="<#=Args[i]#>"><#=columns[i].Description#></param><#
}
#>
/// <returns></returns>
[DataObjectMethod(DataObjectMethodType.Select, false)]
public static <#=returnType#> Find<#=IsAll#>By<#=sb4#>(<#=sb1#>)
{<#if(columns.Length>1){#>
if (Meta.Count >= 1000)
return <#=action#>(new String[] { <#=sb2#> }, new Object[] { <#=sb3#> });
else // 实体缓存
return Meta.Cache.Entities.<#=action#>(e => <#for(int i=0;i<columns.Length;i++){if(i>0)Write(" && ");#>e.<#=columns[i].Alias#> == <#=Args[i]#><#}#>);<#
}else{
String pname=columns[0].Alias;
#>
if (Meta.Count >= 1000)
return <#=action#>(_.<#=pname#>, <#=Args[0]#>);
else // 实体缓存
return Meta.Cache.Entities.<#=action#>(_.<#=pname#>, <#=Args[0]#>);<#if(di.Unique){#>
// 单对象缓存
//return Meta.SingleCache[<#=Args[0]#>];<#}}#>
}
<#
}
}else{
// 加一个换行,避免没有扩展的时候生成的代码有问题
#>
<#}#>
|