0

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

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 个实体到数据库。

4

1 回答 1

1

Fluent NHibernate 文档很好地解释了这一点。第一步是让您的扩展类从基类继承:

public class First : Root

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

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

FNH 默认使用 table-per-subclass 映射策略。如果您想使用按层次结构表映射(我推荐),请覆盖 IsDiscriminated 方法:

public override bool IsDiscriminated(Type type)
{
   return true;
}
于 2013-01-05T14:31:21.427 回答