我有一个像下面这样的类和映射文件。
ClassA
{
public virtual Guid Id {get;set;}
public virtual string Name {get;set;}
public virtual ClassA ObjectA{get;set;}
}
<hibernating-mapping xmlns="urn:nhibernate-mapping2.2">
<class name="ClassA" table="TableA">
<id name="Id" column="Id"/>
<property name="Name" column="Name" />
<many-to-one name="ObjectA" column="ObjectAId"/>
</class
</hibernate-mapping>
表结构如下
TableA
------------------------
Id uniqueidentifier not null (Primary Key)
Name nvarchar(100) not null
ObjectAId uniqueidentifier null (Foreign Key referring to the Id above)
我试图在此数据库中插入值时,我的hbm文件中的多对一映射不起作用。生成的作为事务一部分的插入脚本可以插入具有适当值的(Id,Name),但在此插入脚本之后,将生成更新脚本,如下所示
Update TableA set Id = 'updatevalue' where Id = 'somevalue'.
instead the script should be
Update TableA set ObjectAId = 'updatevalue' where Id = 'somevalue'
这导致主键冲突异常,因为Id字段已经具有“ updatedValue”。
此外,基础对象已正确创建。