使用(Fluent)NHibernate保存已过滤的关联

时间:2013-01-10 10:20:42

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

我有以下实体

User
Job

用户有FavoriteJobs。这是与Job的多对多关联。 此外,此关联已过滤,因此仅提取活动(未归档)作业。

FavoriteJobs关联的映射如下所示。

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

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

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

问题在于,当我想要保存用户时,所有被过滤的作业都被视为关联已被破坏并从交叉引用表中删除(就像用户标记过滤的作业一样)最喜欢的。)

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

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

我很感激任何想法。

1 个答案:

答案 0 :(得分:0)

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

我可能因为NHibernate - Filtered ManyToMany relationship returns null records

给出的原因而导致列表集合失去了它们

您可以尝试使用包或手提包吗?或者在更新方案期间禁用过滤器。