2010-06-09 66 views
3

我买了双向多对多关系缓存NHibernate的双向多对多关系缓存问题

第一端映射问题:

 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很好地存储。但是在第二面,缓存没有更新,并且该集合不包含最近添加的实体。

没有缓存,所有工作都很好...

回答

3

关系的每一边都有自己的缓存;由于第一面的更改,NHibernate不会使第二面的缓存无效。

您可以使用SessionFactory.EvictCollection手动使其无效。