如何使用fluent nhibernate设置键列im多对多关系



我正在使用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

我该如何分配?

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
}

最新更新