我有一组来自不同来源的支付对象,我想在 NHibernate 中使用 TPC 继承。所有这些对象的基础是支付处理器(所以都具有一致的格式),但是在数据库中没有基类的表示。我想我的映射已经解决了,除了我在尝试插入时抛出异常 - “不能使用 <union-subclass> 映射的身份列键生成:<EntityName>”
课程:
public class BasePayment
{
public virtual int Id { get; set; }
public virtual PaymentSource Source { get; set; }
public virtual DateTime Date { get; set; }
public virtual decimal Amount { get; set; }
}
public class SubPayment : BasePayment
{
}
映射:
public class BasePaymentMap : ClassMap<BasePayment>
{
public BasePaymentMap()
{
UseUnionSubclassForInheritanceMapping();
DiscriminateSubClassesOnColumn("Source");
Id(m => m.Id);
Map(m => m.Source);
Map(m => m.Amount);
Map(m => m.Date);
}
}
public class SubPaymentMap : SubclassMap<SubPayment>
{
public SubPaymentMap()
{
DiscriminatorValue(PaymentSource.SourceX);
Abstract();
Table("SourceXPayments");
}
}
这就是我所知道的。在 SaveOrUpdate 上,我收到上述错误,到目前为止,谷歌搜索并没有帮助 - 我发现了这个问题:Cannot use identity column key generation with <union-subclass> ( TABLE_PER_CLASS )这似乎涵盖了这个问题在 Java/Hibernate 中,但是我在将其转换@GeneratedValue(strategy = GenerationType.TABLE)
为 Fluent 语法时遇到了问题,因为 Fluent NHibernate 的GeneratedBy()
方法似乎没有表格,或者很多文档(我已经找到)关于它的作用封面。
做一些更多的阅读似乎这可能是不可能的,所以如果有人可以确认这一点或提供解决这种情况的方法,我们将不胜感激。
如果我没有提供足够的细节,请让我知道还有什么用处。
提前致谢