我有一个数据库视图,它连接在许多表上,以选择针对成员ID的多个实体的可见性,由于其复杂性显然是不可索引的。所以我需要的是能够从成员Id中选择这些实体。我尝试使用带有视图作为映射表的集合的多对多关系:
public PromotionMap()
{
...
this.HasManyToMany(p => p.MembersCanView).Table("PromotionVisibility").Not.Cascade.SaveUpdate().ParentKeyColumn("PromotionId").ChildKeyColumn("MemberId").ReadOnly();
}
虽然这似乎应该可以工作,但行为不是只读的,并且会话总是尝试将更改刷新回数据库视图,这显然会失败。这尤其成问题,因为视图很可能会因插入或删除操作而发生变化。
第10.2.3.3节:http://www.nhforge.org/doc/nh/en/index.html#readonly-proptypes-manytomany-bidir表明双向多对多关系无论如何都会一直刷新,这让我对如何通过加入视图来查询实体感到困惑。
有什么想法吗?
答案 0 :(得分:0)
.Not
仅影响布尔属性,如 Readonly , LazyLoad ,而不会影响 Cascade 等多个选项。因此,您的代码指定为.Not.Readonly()
HasManyToMany(p => p.MembersCanView)
.Table("PromotionVisibility")
.Cascade.None() <-- None instead of .Not
.ParentKeyColumn("PromotionId")
.ChildKeyColumn("MemberId")
.ReadOnly();