如何使用C#(ClassMapping)将NHiberNate映射到同一表中的父级

本文关键字:映射 何使用 ClassMapping NHiberNate | 更新日期: 2023-09-27 18:13:00

我有一个下面的类,它有一个相同类型的父类

public class Unit
{
    public virtual int UnitKey { get; set; }
    public virtual string UnitName { get; set; }
    public virtual string UnitType { get; set; }
    public virtual Unit Parent { get; set; }
    public virtual User UnitLeader { get; set; }
}

数据库中有一个名为单位的表

Unit_Key (int)
Unit_Name (varchar)
Unit_Type (varchar)
Parent_Key (varchar)
User_Key (int)

以下是映射类,

internal class UnitMapping : ClassMapping<Unit>
{
    public UnitMapping()
    {
        Id(x => x.UnitKey, map => 
        { 
            map.Column("Unit_Key"); 
            map.Generator(Generators.Assigned); 
        });
        Property(x => x.UnitName, map => 
        { 
            map.Column("Unit_Name"); 
            map.NotNullable(true); 
        });
        Property(x => x.UnitType, map =>
        {
            map.Column("Unit_Type"); map.NotNullable(true);
        });
        ManyToOne(x => x.UnitLeader, map => 
        { 
            map.Column("User_Key"); map.Cascade(Cascade.None); 
        });
    }
}

如何映射同一表中的Parent(同一类的类型(。

感谢

如何使用C#(ClassMapping)将NHiberNate映射到同一表中的父级

与处理不同实体的方式完全相同。

您已经在映射一个ManyToOne(UnitLeader(;CCD_ 3也没有什么不同。