我在尝试在 NHibernate 中建模多对一关系时遇到问题,其中“一”侧的对象对列具有唯一约束。问题如下:
我有两张表,“Person”和“Country”。每个人都有一个且只有一个与之关联的国家。一个国家可以有很多人(真的!:)),一个国家的名字是唯一的。以下是Person端的映射:
<many-to-one Name="Country">
<column Name="CountryId"/>
</many-to-one>
乡村方面:
<property name="Name" unique="true">
<column name="Name" length="50">
</property>
现在在数据库中,我在 Country 表中的 Name 列上添加了一个唯一约束。如果我在 Person 实例上调用 Save(),NHibernate 只是尝试执行 INSERTS,而我希望它检查 Country Name 是否存在并在 Person 表的 CountryID 列中使用其 ID。相反,由于违反数据库中的唯一约束而引发异常。
在我看来,Nibernate 应该有足够的映射元数据来做正确的事情(或者属性上的唯一属性不能确保这一点?)。有谁知道如何做到这一点或有解决方法?
谢谢,
马汀