2016-05-21 6 views
2

Ich habe Probleme, diese beiden Tabellen zu verbinden.C# linq Wie kann ich diesen Join durchführen?

Ich habe diese 2 Tische

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

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

Mit Linq-Erweiterungsmethoden ich die beiden Tabellen auf der SurveySectionId Basis anschließen möchten, und ein Ergebnis bekommen wie dieses

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

Die Logik, die ich wie folgt aussieht haben Gibt es einen besseren Weg, dies zu tun?

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

Haben Sie etwas versucht? Wie sehen Ihre Entitätsklassen aus? Haben Sie die Beziehungen zwischen Tabellen als Navigationseigenschaften in den Entitätsklassen modelliert? –

+0

Mögliches Duplikat von [LEFT JOIN in LINQ zu Entitäten?] (Http://stackoverflow.com/questions/19356439/left-join-in-linq-to-entities) –

Antwort

1

Verwenden Sie SQL, um eine Ansicht zu erstellen. Dann fragen Sie die Ansicht mit EF ab.

Wann immer Sie mit EF stecken bleiben, ist die richtige Antwort fast immer "Erstellen Sie eine Ansicht".

+1

Das ist keine Option, ich darf nicht erschaffe sie. –

+1

Nun, ich kann Ihnen einen Link anbieten, um es komplett in EF zu machen. Aber wirklich, es ist eine plumpe und fehleranfällige Methode, die ich dringend rate, es sei denn, Sie fragen eine Datenbank ab, die einem Drittanbieter gehört, für den buchstäblich keine Änderungen erlaubt sind. http://stackoverflow.com/questions/5010110/entityframework-join-using-join-method-and-lambdas –

+0

Danke dafür. Genau das habe ich bei meinem ersten Versuch gemacht. Es sah so schlimm aus wie eine Erweiterungsmethode Ich dachte ich mache es falsch. –

Verwandte Themen