簡體   English   中英

流利的NHibernate和朋友的關系

[英]Fluent NHibernate and friend relationship

我需要使用Fluent NHibernate建立朋友關系模型。 我公司的模型有一個List<Company> Related與相關公司有關。 公司之間的關系在我的數據庫中以表格形式建模, related如下:

customer_id | related_id

這兩列都是customers表中PK的外鍵。

問題是關系只為每對保存一次(你稱它為雙向的嗎?)。

如果以另一種方式更容易解決,我可以更改表結構。

我需要映射Fluent NHibernate,這樣當我做customer.Related() ,它會生成一個類似的查詢:

SELECT * FROM companies LEFT JOIN related ON customer_id = id OR related_id = id

我試圖以多種不同的方式對此進行映射,我最接近的嘗試是:

HasManyToMany(x => x.Related)
       .Inverse()
       .ParentKeyColumn("customer_id")
       .ChildKeyColumn("related_id")
       .Table("relations")
       .Cascade.All();

但是,這(當然)僅在customer_id匹配時映射。

我該如何解決這個問題?

編輯:我認為它類似於Fluent NHibernate:如何創建一對多雙向映射? ,但它對我沒有多大幫助。

我認為你想要實現的目標已經完成了一半。 您已經映射了具有Many2Many關系的2個實體。 我不會再觸摸映射。

相反,我會通過該映射查詢我想要的內容。 像這樣的東西。

function GetRelated(long id){

   return Session.Query<Related>()
                 .Where(r=>r.Customer.Id == id || r.Related.Id == id)
                 .ToList(); 
}

推薦,映射實體的名稱是相關的,你有一個相關的字段,可能聽起來令人困惑,所以我建議你重命名為其他東西(如果可能的話)。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM