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 が Company テーブルを更新しないようにする方法はありますか?

4

1 に答える 1

2

カスケード更新を停止するには、単に削除します

.Cascade.SaveUpdate()

多対多マッピングから。

少し混乱するかもしれません。s およびs でcascading使用されているものと比較して。その場合、更新は子テーブルで直接行われます (にはより多くのがあります...には - を含む- カスケードはレコードで操作を行うのが合理的です)<list><map>ParentId

しかし、ここではペア テーブルを使用しています。関係はそこに保存されます。そして、このテーブルは常にNHibernate によって管理されます (暗黙のカスケーディング)。

設定.Cascade.SaveUpdate()は、多対多の関係の反対側に移動します。私たちの場合は会社のテーブルに。便利かもしれません..しかし、それを省略して、すべてを期待どおりに実行することができます。

于 2013-05-24T04:08:05.210 に答える