我想升級現有的應用程序使用NHibernate。我的數據庫有以下表格:NHibernate的 - LINQ查詢多對多問題
Sites:
- Id (PK)
- Name
Categories:
- Id (PK)
- Name
CategoriesSite
- CategoryId (PK)
- SiteId (PK)
- Active
對於每個類別和網站,記錄可能存在或可能不存在於CategoriesSite表中。如果某個項目存在於CategoriesSite表格中,則可以通過將活動設置爲false來關閉類別。 如果它不是,那麼它假定活動是真實的。
我想創建NHibernate的LINQ查詢來過濾特定站點的類別(即有效)。例如說我有以下數據:
Sites:
Id | Name
1 | Site 1
2 | Site 2
Categories:
Id | Name
1 | Category 1
2 | Category 2
CategoriesSite:
CategoryId | SiteId | Active
1 | 1 | True
1 | 2 | True
2 | 1 | False
我可以說:
var categories = session.Query<CategorySite>()
.Where(s => s.Site.Id == 2 && s.Active)
.Select(s => s.Category)
.ToList();
然而,這隻會得到1類,而不是2類,我想它做它。我想知道是否有人做過類似的事情,並且可能會提出一種查詢方法或提供有關如何更好地映射此場景的任何建議。
請剖析生成sql查詢,並向我們展示您的映射。 – edze