Fluent-NHibernate复映射
我们正在研究一个领域,其中要求成员协议根据网络和状态组合而变化。MemberAgreement有一个模板,可以由网络的多个状态共享 我们建模实体的方式是Fluent-NHibernate复映射,nhibernate,mapping,fluent,Nhibernate,Mapping,Fluent,我们正在研究一个领域,其中要求成员协议根据网络和状态组合而变化。MemberAgreement有一个模板,可以由网络的多个状态共享 我们建模实体的方式是 public class MemberAgreement { public Network Network { get; protected set; } public List<State> States { get; protected set; } public Template
public class MemberAgreement
{
public Network Network { get; protected set; }
public List<State> States { get; protected set; }
public Template Template {get; protected set; }
}
在此表协议中,NetworkId和TemplateId可以对不同的StateId重复
现在,我如何在Fluent NHibernate中映射这个?网络和状态之间存在一对多关系,二者的结合与模板之间存在多对多关系
谢谢你的帮助
PC表结构的现状将迫使您更改MemberAgreement
对象定义。每一行(ID唯一)都引用一个引用类型:
public class MemberAgreement
{
public virtual Network Network { get; protected set; }
// public List<State> States { get; protected set; }
public virtual State State { get; protected set; }
public virtual Template Template {get; protected set; }
}
用这种流利的语言:
HasMany(x => x.StateTemplates)
.KeyColumn("NetworkId")
.AsMap<State>("StateId")
.AsTernaryAssociation("TemplateId");
HasMany(x=>x.statemplates)
.KeyColumn(“NetworkId”)
.AsMap(“StateId”)
.asternaryasociation(“模板ID”);
public class Network
{
...
public virtual IDictionary<State, Template> StateTemplates { get; set; }
}
<map name="States" table="Agreement" >
<key column="NetworkId" />
<index-many-to-many column="StateId" class="State" />
<many-to-many column="TempalteId" class="Template" />
</map>
HasMany(x => x.StateTemplates)
.KeyColumn("NetworkId")
.AsMap<State>("StateId")
.AsTernaryAssociation("TemplateId");