我遇到了双向ManyToMany关系缓存的问题
第一面映射:
HasManyToMany(x => x.Jobs)
.Table("ProfileSuggestStoryJob")
.AsSet()
.Cascade.None()
.ParentKeyColumn("ProfileSuggestStoryId")
.ChildKeyColumn("JobId")
.Cache.ReadWrite();
第二面映射:
HasManyToMany(x => x.SuggestedProfiles)
.Table("ProfileSuggestStoryJob")
.AsSet()
.Cascade.None()
.ParentKeyColumn("JobId")
.ChildKeyColumn("ProfileSuggestStoryId")
.Inverse().Cache.ReadWrite();
第一方负责插入/更新/删除,entites存储得很好。但在第二方面,缓存未更新,并且集合不包含最近添加的实体。
没有缓存,一切正常......
答案 0 :(得分:3)
关系的每一面都有自己的缓存;由于第一方的变化,NHibernate不会使第二方的缓存无效。
您可以使用SessionFactory.EvictCollection
手动使其无效。