C# Nhibernate:无法与<;一起使用标识列键生成;联合子类>;映射到:

C# Nhibernate:无法与<;一起使用标识列键生成;联合子类>;映射到:,c#,nhibernate,inheritance,mapping,union-subclass,C#,Nhibernate,Inheritance,Mapping,Union Subclass,我有三个实体,其中电子邮件和短信实体继承了消息实体 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 ToAdd

我有三个实体,其中
电子邮件
短信
实体继承了
消息
实体

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>

,


,


我对此消息有一个例外:
无法将标识列键生成与以下映射一起使用:Core.Domain.Model.Message

我需要知道生成
Id
而不是
native
的策略是什么? 我希望Id的值是:1,2,3,4,5,6,。。。
1,3,5表示电子邮件,2,4,6表示Sms。在继承层次结构中涉及的所有表中,标识符必须是唯一的。因此,不允许为每个表单独工作的生成器。查看NHibernate参考资料中有关生成器的部分,以获得以下列表:。hilo算法对于数值恒等式很常见,但不一定是最容易手动使用的

<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>