我正在尝试升级现有应用程序以使用 NHibernate。我的数据库有以下表格:
Sites:
- Id (PK)
- Name
Categories:
- Id (PK)
- Name
CategoriesSite
- CategoryId (PK)
- SiteId (PK)
- Active
对于每个类别和站点,CategoriesSite 表中可能存在也可能不存在记录。如果某个项目存在于 CategoriesSite 表中,那么它可以通过将 Active 设置为 false 来关闭 Category。如果不是,则假定 Active 为 true。
我想在 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,我希望它这样做。我想知道是否有人做过类似的事情,并且可以提出一种查询方法或提供有关如何更好地映射此场景的任何建议。