このSQLステートメントを流暢なnhibernateマッピングに変えようとしています:
select *
from Project p
inner join ProjectData pd on p.Project = pd.Project
inner join ProjectCompany pc on p.Project = pc.Project and pc.InitComp = 'Yes' and pc.Company = pd.LogComp
inner join ProjectCustomer cust on cust.id = pd.custid
このステートメントを 1 つのエンティティにまとめる際に、多くの問題に直面しています (すべての結合は 1 対 1 の関係です)。
単一のビューで問題が解決することは承知していますが、残念ながらビューを作成する権限がありません。
現在、私のコードは次のようになっています
Table("Project");
Id(p=> p.Number);
Join("ProjectData", j =>
{
j.Fetch.Join();
j.KeyColumn("Project");
j.Map(pd => pd.Customer);
});
Map(p => p.Complexity);
私が直面している問題は次のとおりです。
- ハードコードされたフィルターを作成する方法 (pc.InitComp = 'Yes')
- 2 つのステートメント (p.project = pc.Project および pc.Company = pd.LogComp) で結合するにはどうすればよいですか
- ベースのテーブルではなく、結合されたテーブルから結合するにはどうすればよいですか? (ProjectCustomer は ProjectData で結合します)
SQLで非常に些細なことについて多くの質問がありますが、ビューを作成する以外にインターネット上で簡単な答えを見つけることができないようです。