Fluent-NHibernate复映射

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

我们正在研究一个领域,其中要求成员协议根据网络和状态组合而变化。MemberAgreement有一个模板,可以由网络的多个状态共享

我们建模实体的方式是

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");