2

Asset クラスで 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 になる可能性があります。そのため、コードの null 値を 2 回目に挿入することはできません。SQLAdd a WhereConditionで関連する制約を変更しました:

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

私の問題はこの変更によって解決されましたが、hbm 構成でこのタイプを一意に設定するための解決策が必要です。どうすればいいですか?

4

1 に答える 1

1

hbm に 'where' 属性を追加してみてください:

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