[英]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.