有一个相当简单的(或者我会这么想!)问题开始让我恼火。
我有一组简单的类。
基类“Product”被其他类继承,Product 有一个字符串鉴别器列“ProductType”,它应该允许 NH 返回正确的子类。
下面是我正在研究的一个简单版本。
public class ProductMap : ClassMap<Product>
{
public ProductMap()
{
Table("Product");
Id(x => x.Id)
.GeneratedBy.Identity();
DiscriminateSubClassesOnColumn("ProductType");
Map(x => x.Name)
.Length(200);
Map(x => x.BriefDescription)
.Length(400);
Map(x => x.FullDescription);
Map(x => x.Sku);
Map(x => x.VendorSku);
References(x => x.Vendor, "VendorId");
}
}
public class MotorHomeMap : SubclassMap<MotorHome>
{
public MotorHomeMap()
{
DiscriminatorValue("MotorHome");
Table("MotorHome");
//KeyColumn("ProductId");
Map(x => x.Berths);
}
}
但是,如果我做一个简单的 Session.QueryOver.List() 得到执行的查询结果是
SELECT this_.Id as Id1_0_,
this_.Name as Name1_0_,
this_.BriefDescription as BriefDes4_1_0_,
this_.FullDescription as FullDesc5_1_0_,
this_.Sku as Sku1_0_,
this_.VendorSku as VendorSku1_0_,
this_.VendorId as VendorId1_0_,
this_.Berths as Berths1_0_,
this_.ProductType as ProductT2_1_0_
FROM 产品这个_
显然“泊位”不在 Product 表中,而是在“MotorHome”表中。
我确定我错过了一些相当简单的东西,但我一生都无法弄清楚我在这里做错了什么。
任何帮助将不胜感激。