<#
if(Table.Relations!=null && Table.Relations.Count>0)
{
List<String> tbs=new List<String>();
foreach(IDataRelation dr in Table.Relations)
{
IDataTable rtable = FindTable(dr.RelationTable);
if (rtable == null) continue;
IDataColumn rcolumn = rtable.GetColumn(dr.RelationColumn);
if(rcolumn == null) continue;
IDataColumn field = Table.GetColumn(dr.Column);
String className = rtable.Alias;
String keyName=className;
if(tbs.Contains(keyName)) continue;
tbs.Add(keyName);
Boolean b=dr.Unique;
// 如果是唯一的,应该判断对方的唯一性,如果对方也是唯一,那么就构成一对一
if(b&&rtable.Relations!=null)
{
foreach(IDataRelation dr2 in rtable.Relations)
{
if(dr2.Column==dr.RelationColumn && dr2.RelationTable==Table.Name && dr2.RelationColumn==dr.Column)
{
if(dr2.Unique) b=false;
}
}
}
if(!b)
{
#>
[NonSerialized]
private <#=className#> _<#=keyName#>;
/// <summary>该<#=Table.DisplayName#>所对应的<#=rtable.DisplayName#></summary>
[XmlIgnore]
public <#=className#> <#=keyName#>
{
get
{
<#
if(field.DataType == typeof(String)){
#>if (_<#=keyName#> == null && !String.IsNullOrEmpty(<#=field.Alias#>) && !Dirtys.ContainsKey("<#=keyName#>"))<#
}else{#>if (_<#=keyName#> == null && <#=field.Alias#> > 0 && !Dirtys.ContainsKey("<#=keyName#>"))<#
}#>
{
_<#=keyName#> = <#=className#>.FindBy<#=rcolumn.Alias#>(<#=field.Alias#>);
Dirtys["<#=keyName#>"] = true;
}
return _<#=keyName#>;
}
set { _<#=keyName#> = value; }
}
<#
// 如果对方有名为Name的字符串字段,则加一个扩展属性
IDataColumn rname=rtable.GetColumn("Name");
if(rname!=null&&rname.DataType==typeof(String)&&Table.GetColumn(keyName+"Name")==null){
#>
/// <summary>该<#=Table.DisplayName#>所对应的<#=rtable.DisplayName#><#=rname.DisplayName#></summary>
[XmlIgnore]
public String <#=keyName#>Name { get { return <#=keyName#> != null ? <#=keyName#>.Name : null; } }
<#
}
}else
{
keyName+="s";
#>
[NonSerialized]
private EntityList<<#=className#>> _<#=keyName#>;
/// <summary>该<#=Table.DisplayName#>所拥有的<#=rtable.DisplayName#>集合</summary>
[XmlIgnore]
public EntityList<<#=className#>> <#=keyName#>
{
get
{
<#
if(field.DataType == typeof(String)){
#>if (_<#=keyName#> == null && !String.IsNullOrEmpty(<#=field.Alias#>) && !Dirtys.ContainsKey("<#=keyName#>"))<#
}else{#>if (_<#=keyName#> == null && <#=field.Alias#> > 0 && !Dirtys.ContainsKey("<#=keyName#>"))<#
}#>
{
_<#=keyName#> = <#=className#>.FindAllBy<#=rcolumn.Alias#>(<#=field.Alias#>);
Dirtys["<#=keyName#>"] = true;
}
return _<#=keyName#>;
}
set { _<#=keyName#> = value; }
}
<#
}
}
}else{
// 加一个换行,避免没有扩展的时候生成的代码有问题
#>
<#}#>
|