0

我有一个[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 不更新公司表?

4

1 回答 1

2

要停止级联更新,只需删除

.Cascade.SaveUpdate()

从您的多对多映射。

这可能有点令人困惑。与cascading用于<list>s 和<map>s 的比较。在这种情况下,直接在子表上进行更新(级有更多的级...级包含-级联对子记录ParentId进行操作是合理的)

但在这里我们正在使用一对表。关系存储在那里。并且这个表将始终由 NHibernate 管理(隐式级联)。

设置.Cascade.SaveUpdate()转到多对多关系的另一端。在我们的例子中到公司表。它可能很方便..但您可以省略它并让一切按预期运行。

于 2013-05-24T04:08:05.210 回答