如何用流畅的nhibernate设置多对多关键列

时间:2011-07-03 06:34:00

标签: fluent-nhibernate

我正在使用flunet nhibernate,并且在多对多的关系中,我需要在这两个实体之间有表的关键列

  HasManyToMany(p => p.Signers)
            //.Cascade.AllDeleteOrphan()
            .Table("PersonnelDocumentSigner")
            .Schema("personnel");

 public partial class PersonnelDocument 
 {
private IList<Position> _signers;
 virtual public IList<Position> Signers
    {
        get
        {
            if (_signers == null)
                _signers = new List<Position>();

            return _signers;
        }
        set
        {
            _signers = value;
        }
    }
 }

创建的表只包含以下两列:PersonnelDocumentId,PositionId 但我需要这个连接器表“PersonnelDocumentSigner”

的列Id

我究竟可以分配它?

1 个答案:

答案 0 :(得分:0)

像您PersonnelDocumentSigner这样的

链接表通常不需要Id列,因为PersonnelDocumentIdPositionId一起是Id / Primary键。如果您仍想在链接表中添加其他数据,则应创建一个新实体。

class PersonnelDocumentSigner
{
    public virtual PersonnelDocument Document { get; set; }
    public virtual Position Signer { get; set; }

    public virtual int Id { get; set; }
    // additional Properties
}

class PersonnelDocumentSignerMap : ClassMap<PersonnelDocumentSigner>
{
    Table("PersonnelDocumentSigner");

    CompositeId()
        .KeyReference(pds => pds.Document)
        .KeyReference(pds => pds.Signer);

    Map(pds => pds.Id);
    // additional Mapps
}