NHibernate自定义表层次结构
我正在使用NHibernate映射以下实体:NHibernate自定义表层次结构,nhibernate,Nhibernate,我正在使用NHibernate映射以下实体: + Party (abstract) - Employee - Customer 我以以下方式使用名为:联接子类的映射策略: <!-- Base PARTY entity--> <class name="PartyMap" abstract="true" table="Party"> <id name="Id" column="PartyID"> <generator cla
+ Party (abstract)
- Employee
- Customer
我以以下方式使用名为:联接子类的映射策略:
<!-- Base PARTY entity-->
<class name="PartyMap" abstract="true" table="Party">
<id name="Id" column="PartyID">
<generator class="guid.comb" />
</id>
<joined-subclass table="Customer" name="Customer">
<key column="CustomerID" />
</joined-subclass>
<joined-subclass table="Employee" name="Employee">
<key column="EmployeeID" />
</joined-subclass>
</class>
而NHibernate则为映射的每个子表使用Id字段。我是否应该使用不同的方法(如组件)来实现我的目标?我发现的一个可能的解决方案是在NHibernate框架上实现一个事件列表器,这样每次保存实体时,我都可以控制传递的值并用Guid修复错误,而无需创建疯狂的存储过程。
我知道这很难看,但数据库是遗留的,所以我真的无能为力你怎么会有这些ID(我是说
EmployeeID
和CustomerID
)?你对架构有影响吗?没有,这是一个旧的数据库遗留,它会将guid.empty写入。如果关系不令人满意,或者你应该使用多对一映射。好了,我也有同样的想法,它将完全破坏我的POCO的结构,但此层次结构的逻辑与正常情况大不相同那些Guid.Empty
值将有问题。首先,它们可能意味着关系上没有外键约束,因此数据库中可能有坏数据。NHibernate期望(非常合理地)如果外键不为null,则在关系的另一端存在一行。有几种不同的方法来处理这个问题。
PartyTable
PartyID
EmployeeID
CustomerID