1

我有以下实体

User
Job

一个用户有最喜欢的工作。这是与 Job 的多对多关联。此外,此关联会被过滤,以便仅获取活动(未归档)作业。

FavoriteJobs 关联的映射如下所示。

HasManyToMany(x => x.FavoriteJobs)
.Table("UserJob")
.ParentKeyColumn("UserId")
.ChildKeyColumn("JobId")
.ApplyChildFilter<ExcludeArchivedJobsFilter>("IsArchived = :condition")
.Cascade.None();

可以随时从应用程序归档和取消归档作业。

获取用户时,FavoriteJobs 集合中填充了正确的作业,只有活动的作业。

问题是当我想保存用户时,所有被过滤的作业都被视为它们的关联已被破坏并从交叉引用表中删除(就像用户将过滤后的作业标记为不再收藏一样) .

我想知道是否有任何模式可以将过滤的条目标记为刚刚过滤而不是删除。

当有更新事件时,例如从映射中禁用过滤器。

我会很感激任何想法。

4

1 回答 1

0

保存时集合集合将完全重写集合,这就是过滤元素消失的原因。

我可能是由于 NHibernate 给出的原因,列表集合会丢失它们- 过滤的多对多关系返回空记录

您可以尝试使用 bag 或 idbag 来代替吗?或者在更新场景期间禁用过滤器。

于 2013-01-14T17:52:52.063 回答