我知道在NHibernate中你可以有继承映射,我知道你可以拥有每个类的表,每个子类的表和每个具体的表类,但它们并不适合我的情况。
基本上我想要的是能够拥有一个名为product的基类,如下所示:
public class BaseProduct
{
public virtual int ProductId {get;set;}
public virtual string ProductName {get;set;}
}
直接映射到产品表。
然后我希望有一个继承自BaseProduct的Product类,如下所示:
public class Product : BaseProduct
{
public virtual IList<Category> Categories {get;set;}
}
问题是Product类仍应映射到product表,唯一的区别是此实现有附加的Categories列表。
我没有涉及为什么我需要这样做的技术原因,我想知道它是否可能?
答案 0 :(得分:3)
根据你的问题和评论,我得到你想要的«Single Table Inheritance» [PoEAA,Fowler],但是没有足够的能力在桌子上添加所需的鉴别器。
我自己从未遇到过这种情况,但是尝试在映射中添加一个鉴别器,这是一个计算值/派生字段,它使用sql来查找是否有来自Category的外键(不适用于Products虽然有空的类别集合。
如果您的方案是只读方案,并且您可以向数据库添加视图,则可以选择使用如上所述计算的鉴别器映射到“产品”视图。
答案 1 :(得分:0)
您正在寻找设置鉴别器值所需的表perclass NHDoc for inheritance
答案 2 :(得分:0)
您是否有其他从BaseProduct继承的类?如果没有,您只能映射Product类。