如何在NHibernate数据库中设置身份

时间:2013-03-28 16:27:43

标签: c# .net nhibernate

我们正在使用NHibernate 2.

我创建了一个新表,看起来像这样:

Table: CategoryDependency
CategoryDependencyId    CategoryId    ParentCategoryId
--------------------    ----------    ----------------
      0                 0                NULL - root
      0                 1                0
      0                 44               1

......等等

注意CategoryDe​​pendencyId的零。我是NH的新手,因此我在SQL Server 2008表定义中将其设置为不为空的PK,默认值为0,否则如果我不默认它,我将无法将数据插入此表因为它会抱怨你不能为CategoryDe​​pendencyId插入null,显然。

这是对的吗?然后NHibernate仍然会覆盖CategoryDe​​pendencyId并为你增加它:

我假设您使用它将其设置为增量:

当我运行我的代码时,我没有回复记录:

<?xml version="1.0"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace=".....our namespace is here" assembly="OurAssemblyNameIsHere">


    <class name="CategoryDependency" table="CategoryDependency">


          <id name="ID" type="int">
              <column name="CategoryDependencyId" />
              <generator class="increment" />

          </id>

        <property name="CategoryDependencyId" />
        <property name="CategoryId" />
        <property name="ParentCategoryId" />

    </class>

1 个答案:

答案 0 :(得分:0)

如果您想要生成身份,请使用identity

increment表示不同的东西,不应该使用它。

无论如何,identity也不是一个好的生成策略。如果可以,请转到guid.combhilo