【问题标题】:Nhibernate : Cannot use identity column key generation with <union-subclass> mapping for:Nhibernate:无法将标识列密钥生成与 <union-subclass> 映射一起用于:
【发布时间】:2013-08-07 06:31:43
【问题描述】:

我有三个实体,其中 EmailSms 实体继承自 Message 实体

public class Message 
{
    virtual public long Id { get; set; }
    virtual public string Body { get; set; }
}

public class Email : Message 
{
    virtual public string Subject { get; set; }
    virtual public string ToAddress { get; set; }
}

public class Sms : Message 
{
    virtual public string Number{ get; set; }
}

映射:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Core.Domain" namespace="Core.Domain.Model">
  <class name="Message" table="Core_Message"  >

    <id name="Id" >
      <generator class="native" />
    </id>

    <version name="Version"/>

    <property name="Body" not-null="true"/>   

  </class>
</hibernate-mapping>

,

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Core.Domain" namespace="Core.Domain.Model">
  <union-subclass name="Email" extends="Message" table="Core_Email"  >

    <property name="Subject"/>

    <property name="ToAddress"/>

  </union-subclass>
</hibernate-mapping>

,

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Core.Domain" namespace="Core.Domain.Model">
      <union-subclass name="Sms" extends="Message" table="Core_Sms"  >

        <property name="Number"/>   

      </union-subclass>
    </hibernate-mapping>

这条消息我有一个例外: Cannot use identity column key generation with &lt;union-subclass&gt; mapping for: Core.Domain.Model.Message

我需要什么策略来生成Id 而不是native? 我希望 Id 的值是:1,2,3,4,5,6,... 其中 1,3,5 用于电子邮件,2,4,6 用于短信

【问题讨论】:

    标签: c# nhibernate inheritance mapping union-subclass


    【解决方案1】:

    标识符在继承层次结构中涉及的所有表中必须是唯一的。因此,不允许为每个表单独工作的生成器。在 NHibernate 参考中关于生成器的部分中查看(some) available algorithms 的列表。 hilo 算法对于数字身份很常见,但不一定是最容易手动使用的。

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 2010-10-29
      • 2010-09-19
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      • 2019-08-26
      • 2018-11-28
      • 2011-12-07
      相关资源
      最近更新 更多