流利的Nhibernate ---如何使它不更新其他表

时间:2013-05-24 02:46:55

标签: nhibernate fluent-nhibernate fluent-nhibernate-mapping

我有一个[User]表/类和一个[Company]表/类,它们之间有一个链接表[UserCompany]

在编辑用户时,除了基本信息之外,人们也可以更改该用户的访问公司,所以我在UserMap.cs中执行这样的地图:

HasManyToMany(u => u
  .Companies)
  .Cascade.SaveUpdate()
  .Table("UserCompany")
  .ParentKeyColumn("UserId")
  .ChildKeyColumn("CompanyCode")
  .Not.LazyLoad();

同样在CompanyMap.cs中我设置了反向:

HasManyToMany(c => c.Users)
  .Inverse()
  .Table("UserCompany")
  .ParentKeyColumn("CompanyCode")
  .ChildKeyColumn("UserId");    

现在的问题是:我可以更新[User]信息/表,以及[UserCompany]表中的链接数据。但是,Fluent Nhibernate也会更新我根本不需要的[Company]表。

有什么方法可以让FN不更新公司表吗?

1 个答案:

答案 0 :(得分:2)

要停止级联更新,请删除

.Cascade.SaveUpdate()

来自您的多对多映射。

这可能有点令人困惑。与cascading<list>上使用的<map>相比较。在这种情况下,更新直接在子表上完成(有更多孩子 ... 孩子包含 {{ 1}} - 级联在记录上进行操作是合理的)

但是我们正在使用配对表。关系存储在那里。此表将由NHibernate(隐式级联)始终管理。

设置ParentId转到多对多关系的另一端。在我们的案例中到公司表。它可能很方便..但你可以省略它并使所有内容按预期运行。