级联插入一对多,流畅的NHibernate

时间:2010-09-21 19:40:12

标签: nhibernate fluent-nhibernate

我有两个使用流畅的NHibernate映射的类 - User和UserRoleAssignment。用户有许多UserRoleAssignments。这是用户的相关地图:

HasMany(x => x.Roles)
.Table("UserRoleMap")
.Cascade.SaveUpdate();

对于UserRoleAssignment:

Map(x => x.User_Id);

如您所见,我只是从User引用UserRoleAssignment。从UserRoleAssignment,我只映射外键列(User_Id)。 问题是,当我保存用户时,我得到一个由外键约束引起的异常,因为NHibernate在User_id属性的值中插入0。这只发生在新用户上 - 现有用户(已经有ID),工作正常。

所以问题是,我怎样才能确保NHibernate将User_Id的值设置为插入新用户时生成的ID?

非常感谢!

1 个答案:

答案 0 :(得分:0)

http://nhibernate.info/doc/nh/en/index.html#collections-onetomany中记录了这一点:

  

非常重要注意:如果<key>关联的<one-to-many>列声明为NOT NULL,则NHibernate在创建或更新关联时可能会导致约束违规。要防止出现此问题,必须使用标记为inverse="true"的多值结束(集合或包)的双向关联。请参阅本章后面的双向关联讨论。