流利的NHibernate自动映射2类到一个实体

本文关键字:实体 一个 2类 NHibernate 映射 | 更新日期: 2023-09-27 17:50:49

如何自动映射两个类到一个数据库实体?

public abstract class Root
{
        public virtual int Id { get; set; }
        public virtual string Item { get; set;}
}
public class First
{
        public override string ToString()
        {
                return "First " + Id;
        }
}
public class Second
{
        public override string ToString()
        {
                return "Second " + Id;
        }
}

生成2个实体到数据库

流利的NHibernate自动映射2类到一个实体

Fluent NHibernate文档对此解释得很好。第一步是从基类继承扩展类:

public class First : Root

由于你的基类是抽象的,你指示FNH不将其映射为具体类:

AutoMap.AssemblyOf<Entity>(cfg).IgnoreBase<Entity>();

FNH默认使用每子类一个表的映射策略。如果您想使用每层次表的映射(我推荐使用),请覆盖isdiscriminator方法:

public override bool IsDiscriminated(Type type)
{
   return true;
}