1

この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で非常に些細なことについて多くの質問がありますが、ビューを作成する以外にインターネット上で簡単な答えを見つけることができないようです。

4

1 に答える 1

0

生のSQLクエリになり、データリーダーを使用してオブジェクトを手動で入力しました。
これはうまくいきました。テーブルから読み取るだけで、書き込む必要はありませんでした。

于 2012-08-14T13:27:39.067 に答える