2013-08-30 24 views
0

我映射使用NHibernate以下实体: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> 

我的问题是派对表我有以下结构:

PartyTable 
    PartyID 
    EmployeeID 
    CustomerID 

虽然NHibernate使用Id字段为每个子表映射。我是否应该使用组件等不同方法来实现我的目标?

+0

你怎么有这些ID(我的意思是'EmployeeID'和'CustomerID')?你对模式有影响吗? – oddparity

+0

不,这是一个旧的数据库遗留问题,如果关系不满意,则写入guid.empty – Raffaeu

+1

也许您应该使用多对一映射。 – oddparity

回答

0

我发现的一个可能的解决方案是在NHibernate框架之上实现一个事件列表器,以便每次保存一个实体时,我都可以控制传递的值并用Guid修复错误,而不需要创建疯狂的存储流程。 我知道这是丑陋的,但数据库是遗留的,所以没有什么我可以做