要将NHibernate从表A映射到表A本身具有多对多关系,您需要遵循以下步骤:
以下是一个示例:
public class TableAMapping : ClassMap<TableA>
{
public TableAMapping()
{
Id(x => x.Id);
Map(x => x.Name);
HasManyToMany(x => x.RelatedTableAs)
.Table("TableA_TableA")
.ParentKeyColumn("TableAId")
.ChildKeyColumn("RelatedTableAId")
.Cascade.All();
}
}
public class TableA_TableAMapping : ClassMap<TableA_TableA>
{
public TableA_TableAMapping()
{
CompositeId()
.KeyReference(x => x.TableA, "TableAId")
.KeyReference(x => x.RelatedTableA, "RelatedTableAId");
}
}
public class TableA
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<TableA> RelatedTableAs { get; set; }
}
public class TableA_TableA
{
public virtual TableA TableA { get; set; }
public virtual TableA RelatedTableA { get; set; }
}
在这个示例中,我们首先创建了一个名为TableA_TableA
的中间表,并在TableAMapping
中定义了一个多对多关系,该关系将表A映射到中间表。然后,在TableA_TableAMapping
中,我们定义了一个复合主键,该主键由TableAId
和RelatedTableAId
组成。最后,在TableA
类中,我们添加了一个RelatedTableAs
属性,该属性将表示与该实例相关的所有表A实例。
领取专属 10元无门槛券
手把手带您无忧上云