2016-05-21 6 views
2

これらの2つのテーブルを結合する際に問題があります。c#linqこの結合はどのように実行できますか?

私は私が持っているロジックは次のようになり、私はSurveySectionIdに基づいて2つのテーブルを結合したいLINQの拡張メソッドを使用して、これらの2つのテーブル

SurveySectionTable 
-SurveySectionId-(pk) 
-surveyId 
-SurveySectionName 
-comments 
-score 
... 

SurveySectionLoalocazationTable 
-SurveySectionLocalizationId-(pk) 
-SurveySectionId-(fk) 
-SurveySectionName 
-comments 
... 

を持っており、この

NewResult 
-SurveySectionId 
-surveyId(from SurveySectionTable) 
-SurveySectionName (from SurveySectionLocalizationTable) 
-comments(from SurveySectionLocalizationTable) 
-score (from SurveySectionTable) 
    ... 

のような結果を得ますこれを行うにはよりよい方法がありますか?

public async Task<SurveySectionEditViewModel> GetSurveySectionEditLocalizationVm(Guid surveySectionId, Guid localizationId) 
    { 
     var defaultTable = await UOF.SurveySectionService.GetById(surveySectionId); 

     var localizationTable = //get by both parameters; 

     var result = new SurveySectionEditViewModel 
     { 
      SurveySectionId = surveySectionId, 
      SurveyId = defaultTable.SurveyId, 
      SurveySectionName = localizationTable.SurveySectionName, 
      Comments = localizatoinTable.Comments, 
      Score = defaultTable.Score 
     }; 
     return result; 
    } 
+1

何か試しましたか?あなたのエンティティクラスはどのように見えますか?エンティティクラスのナビゲーションプロパティとしてテーブル間の関係をモデル化しましたか? –

+0

[LINQのLEFT JOINとエンティティとの重複の可能性がありますか?](0120-18751) –

答えて

1

SQLを使用してビューを作成します。次に、EFを使用してビューを照会します。

EFで立ち往生するたびに、正解はほぼ常に「ビューを作成する」ことです。

+1

これはオプションではありません。それらを作成します。 –

+1

私はあなたにEFでそれを完全に行うためのリンクを提供することができます。しかし、実際には、文字通り変更が許可されていない第三者のベンダーが所有するデータベースにクエリを実行している場合を除き、私が強くお勧めします。 http://stackoverflow.com/questions/5010110/entityframework-join-using-join-method-and-lambdas –

+0

ありがとうございました。私は最初の試みで全く同じことをしました。私はそれが間違っていると思った拡張メソッドとしてそれはとても悪く見えました。 –

関連する問題