次のマッピングがあります
UserProfile.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="AngusBook.Domain"
namespace="AngusBook.Domain">
<class name="UserProfile">
<id name="UserId" type="int">
<generator class="identity" />
</id>
<natural-id mutable="false">
<property name="UserName" />
</natural-id>
<set name="Companies" table="Users_Companies">
<key column="UserId"/>
<many-to-many column="CompanyId" class="Company" />
</set>
</class>
</hibernate-mapping>
Company.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="AngusBook.Domain" namespace="AngusBook.Domain" >
<class name="Company">
<id name="Id">
<generator class="hilo" />
</id>
<natural-id mutable="false">
<property name="CompanyName" />
</natural-id>
<set name="Users" table="Users_Companies">
<key column="CompanyId"/>
<many-to-many column="UserId" class="UserProfile" />
</set>
</class>
</hibernate-mapping>
テーブルデザイン
このマッピングを使用すると、Users_Companies テーブルに 2 つの同一の行を作成できます (つまり、UserProfile テーブルと Company テーブルに属する同じ外部キーのペアを持つ 2 つの行)。マッピングを使用して、テーブルに既に存在する Users_Companies に外部キーのペアを挿入しようとしたときに、NHibernate または SQL がエラー/例外をスローするようにするにはどうすればよいですか? Users_Companies の各行は一意であり、反復データを持たないようにしたいと考えています。