我使用NHibernate和FluenNHibernate。
我有2个课程Deal和SpecialDeal。 表" SpecialDeal"不包含Volume列。我真的存储并只使用了SpecialDealMap中显示的4个属性。在我将NHibernate更新到4.0版本之前就可以了。现在查询失败了,因为他们试图获得来自" SpecialDeal"虽然在SpecialDealMap中没有Volume,但它确实不在" SpecialDeal"表。
我该如何解决?
public class Deal
{
public long Id { get; set; }
public DateTime Time { get; set; }
public decimal Price { get; set; }
public decimal Volume { get; set; }
public Deal() {}
}
public class SpecialDeal: Deal
{
public string Code { get; set; }
}
public class SpecialDealMap: ClassMap<SpecialDeal>
{
Id(x => x.Id);
Map(x => x.Time);
Map(x => x.Price);
Map(x => x.Code);
}
答案 0 :(得分:0)
您将不得不重构您的代码。如果Volume不是特殊交易的一部分,那么这实际上并不是一种关系。
我建议像
这样的课程布局public class Deal
{
public long Id { get; set; }
public DateTime Time { get; set; }
public decimal Price { get; set; }
}
public class VolumeDeal : Deal
{
public decimal Volume { get; set; }
}
public class SpecialDeal : Deal
{
public string Code { get; set; }
}
您还可以确定是要创建每个层次的表还是每个子类的表。你目前还没有使用任何Nhibernate的继承映射,因为你的子类没有使用SubclassMap进行映射。它使用ClassMap。