NHibernate—将ID映射到DB2标识

NHibernate—将ID映射到DB2标识,nhibernate,nhibernate-mapping,db2,ibm-midrange,Nhibernate,Nhibernate Mapping,Db2,Ibm Midrange,我是NHibernate新手,正试图通过ISeries提供程序连接到DB2表。该表有一个自动生成为标识的BIGINT主键。我在映射文件中尝试了id的generator属性的几个值,但都没有成功。表def看起来是这样的(字段名称已更改): 映射文件如下所示: <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> <class name="Project.Domain.Thing, Project" table="TABL

我是NHibernate新手,正试图通过ISeries提供程序连接到DB2表。该表有一个自动生成为标识的BIGINT主键。我在映射文件中尝试了id的generator属性的几个值,但都没有成功。表def看起来是这样的(字段名称已更改):

映射文件如下所示:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="Project.Domain.Thing, Project" table="TABLE">
    <id name="ID" column="PKID" type="Int64">
      <generator class="**???????**" />
    </id>
    <property name="SomeString" column="SOMESTRING" />
    <property name="FirstFK" column="FIRSTFK"/>
    <property name="SecondFK" column="SECONDFK"/>
    <property name="AnotherString" column="ANOTHERSTRING"/>
  </class>
</hibernate-mapping> 

首先,我将generator类设置为“native”,根据上下文,它为DB2选择“identity”。使用“native”或“identity”,当我将generator类更改为各种其他值时,会出现“PKID列中不允许出现Null值”和各种其他错误

我确信文档中缺少了一些小东西,但是有没有办法让NHibernate获取主键的下一个值,它是DB2中生成的标识,并在调用Save()时为我处理它?我需要在NHibernate可以用来获取下一个值的地方写一个select吗


提前谢谢。

我发现了这一点,因此,如果将来有人在做这类事情时遇到同样的问题,下面就是问题所在

我正在使用来自的教程,并将其改编为ISeries。直到T,我忽略了跳过实际创建模式的部分。我已经在ISeries DB2环境中创建了所有表,因此我不应该在测试运行中这样做:

<NUnit.Framework.SetUp()> _
Public Sub SetupContext()
     Dim schemaExport As New NHibernate.Tool.hbm2ddl.SchemaExport(_configuration)
     schemaExport.Execute(False, True, False, False)
End Sub
_
公共子设置上下文()
Dim schemaExport为新的NHibernate.Tool.hbm2ddl.schemaExport(_配置)
schemaExport.Execute(False,True,False,False)
端接头

特别是因为我的ID字段映射文件设置不正确,生成器类为“assigned”。当我查看表定义并意识到调用SchemaExport.Execute()时,NHibernate已覆盖主键字段PKID的生成标识属性,我只是用正确的属性重新创建了表,将generator类更改为“identity”,删除了SchemaExport调用,现在一切都正常了。

我发现了这一点,因此,如果将来有人在做这类事情时遇到同样的问题,下面就是问题所在

我正在使用来自的教程,并将其改编为ISeries。直到T,我忽略了跳过实际创建模式的部分。我已经在ISeries DB2环境中创建了所有表,因此我不应该在测试运行中这样做:

<NUnit.Framework.SetUp()> _
Public Sub SetupContext()
     Dim schemaExport As New NHibernate.Tool.hbm2ddl.SchemaExport(_configuration)
     schemaExport.Execute(False, True, False, False)
End Sub
_
公共子设置上下文()
Dim schemaExport为新的NHibernate.Tool.hbm2ddl.schemaExport(_配置)
schemaExport.Execute(False,True,False,False)
端接头
特别是因为我的ID字段映射文件设置不正确,生成器类为“assigned”。当我查看表定义并意识到调用SchemaExport.Execute()时,NHibernate已覆盖主键字段PKID的生成标识属性,我只是用正确的属性重新创建了表,将generator类更改为“identity”,删除了SchemaExport调用,现在一切都正常了