次のエンティティがあります
User
Job
ユーザーには FavoriteJobs があります。これは Job との多対多の関連付けです。また、この関連付けはフィルタリングされ、アクティブな (アーカイブされていない) ジョブのみが取得されます。
FavoriteJobs 関連付けのマッピングは次のようになります。
HasManyToMany(x => x.FavoriteJobs)
.Table("UserJob")
.ParentKeyColumn("UserId")
.ChildKeyColumn("JobId")
.ApplyChildFilter<ExcludeArchivedJobsFilter>("IsArchived = :condition")
.Cascade.None();
ジョブは、アプリケーションからいつでもアーカイブおよびアーカイブ解除できます。
ユーザーを取得すると、FavoriteJobs コレクションには適切なジョブ (アクティブなジョブのみ) が取り込まれます。
問題は、ユーザーを保存したいときに、フィルター処理されたすべてのジョブが関連付けが壊れているかのように扱われ、クロスリファレンス テーブルから削除されることです (ユーザーがフィルター処理されたジョブをお気に入りではないとマークしたように) .
フィルタリングされたエントリをフィルタリングされただけで削除されていないとマークするパターンがあるかどうか疑問に思っています。
更新イベントがあるときにマッピングからフィルターを無効にするようなもの。
アイデアをいただければ幸いです。