2011-12-04 78 views
2

我有一個數據庫視圖,它在一些表上連接,以便根據成員id來選擇多個實體的可見性,可轉位。所以我需要的是能夠從這些實體中選擇成員ID。我想這與許多一對多使用集合與視圖的映射表關係:Fluent NHibernate與非索引數據庫視圖之間的多對多關係

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

.Not隻影響布爾屬性,如只讀LazyLoad而不是多個選擇像級聯。因此,你的代碼指定.Not.Readonly()

HasManyToMany(p => p.MembersCanView) 
    .Table("PromotionVisibility") 
    .Cascade.None()      <-- None instead of .Not 
    .ParentKeyColumn("PromotionId") 
    .ChildKeyColumn("MemberId") 
    .ReadOnly(); 
+0

謝謝,這似乎已經伎倆。我發現它仍然試圖級聯刪除,但我能夠通過反轉關係來阻止它。 –

相關問題