NHibernateを使用するように既存のアプリケーションをアップグレードしようとしています。私のデータベースには次のテーブルがあります。
Sites:
- Id (PK)
- Name
Categories:
- Id (PK)
- Name
CategoriesSite
- CategoryId (PK)
- SiteId (PK)
- Active
カテゴリとサイトごとに、CategoriesSiteテーブルにレコードが存在する場合と存在しない場合があります。アイテムがCategoriesSiteテーブルに存在する場合、Activeをfalseに設定することにより、カテゴリーをオフにすることができます。そうでない場合は、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は取得しません。誰かが同様のことをして、これを照会する方法を提案したり、このシナリオをより適切にマッピングする方法についての推奨事項を提供したりできるかどうか疑問に思いました。