我有以下实体
User
Job
用户有FavoriteJobs。这是与Job的多对多关联。 此外,此关联已过滤,因此仅提取活动(未归档)作业。
FavoriteJobs关联的映射如下所示。
HasManyToMany(x => x.FavoriteJobs)
.Table("UserJob")
.ParentKeyColumn("UserId")
.ChildKeyColumn("JobId")
.ApplyChildFilter<ExcludeArchivedJobsFilter>("IsArchived = :condition")
.Cascade.None();
可以随时从应用程序归档和取消归档作业。
在获取用户时,FavoriteJobs集合中填充了正确的作业,只有活动作业。
问题在于,当我想要保存用户时,所有被过滤的作业都被视为关联已被破坏并从交叉引用表中删除(就像用户标记过滤的作业一样)最喜欢的。)
我想知道是否有任何模式将过滤后的条目标记为刚刚过滤而未删除。
当有更新事件时,从映射中禁用过滤器。
我很感激任何想法。
答案 0 :(得分:0)
设置集合将在保存时完全重写集合,这就是过滤后的元素消失的原因。
我可能因为NHibernate - Filtered ManyToMany relationship returns null records
给出的原因而导致列表集合失去了它们您可以尝试使用包或手提包吗?或者在更新方案期间禁用过滤器。