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

我正在使用NHibernate映射以下实体:

+ 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