2

我有一个通过资产类使用 NHibernate 的项目。此类的 Hbm 配置是:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Domain" namespace="Domain.Entities">
  <class name="Asset" table="Table_Asset" >

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

    <property name="Code" unique="true"/>

  </class>
</hibernate-mapping>

此类中的代码列是唯一的,但此列的值可能为 Null。所以代码的空值不能第二次插入。SQL我通过添加条件更改了相关约束Where

CREATE UNIQUE NONCLUSTERED INDEX [IX_Asset_Code] ON [dbo].[Table_Asset] 
(
    [Code] ASC
)
WHERE ([Code] IS NOT NULL)

这个更改解决了我的问题,但我需要一个解决方案来在我的 hbm 配置中设置这种类型的唯一性。我该怎么办?

4

1 回答 1

1

尝试将 'where' 属性添加到您的 hbm:

`<class name="Asset" table="Table_Asset" where="[Code] IS NOT NULL">`
于 2012-10-16T13:15:15.980 回答