Warum gibt Iterieren über IQueryable den ersten Wert für jedes Element im Ergebnis?

8

Ich habe einen Codeblock, der versucht, einige einfache Konfigurationsparameter aus einer Datenbank abzufragen. Mit dem folgenden Code erhalte ich jedoch, sobald ich das Ergebnis aufzählte, den ersten Wert für jedes Element im Ergebnis:

%Vor%

Wenn ich die Ergebnisse drucke (bevor ich versuche, sie zu einem neuen Wörterbuch hinzuzufügen), bekomme ich etwas wie:

%Vor%

Aber wenn ich die Zeile durch einen anonymen Typ ersetze, funktioniert es ganz gut:

%Vor%

Mit diesem anonymen Typ bekomme ich folgendes Ergebnis:

%Vor%

Ich habe das jetzt für ein paar Stunden vergeblich recherchiert, und obwohl ich es mit dem anonymen Typ nur gut nennen könnte, stört mich das wirklich. Ich habe viele Beispiele gesehen, die vorschlagen, dass mein erster Code-Block gut funktionieren sollte. Ich bin mir sicher, ich mache etwas Dummes, ich kann es einfach nicht sehen!

Irgendwelche Ideen?

Nachfolgend finden Sie die vollständigen Details des Modells, das ich beginnend mit der DataContext-Implementierung verwende:

%Vor%

Die Kerninhalts-Tabelle wird durch meine ConfigurationContentsTable-Entitätsklasse dargestellt:

%Vor%

Die beiden zugehörigen Tabellen sind ziemlich einfach und existieren nur für Normalisierungszwecke. Sie werden wie folgt dargestellt:

%Vor%

Und schließlich:

%Vor%     
Sam 04.04.2013, 16:33
quelle

1 Antwort

0

Nachdem ich mehr über meinen Code gegraben und gelesen habe, habe ich zwei Probleme gefunden, die bei der Korrektur das erwartete Ergebnis liefern.

Zuerst wurde in meiner ConfigurationContentsTable-Entity-Klasse mein PK-Feld so konfiguriert, dass es auf das ConfigurationContextId anstelle des ConfigurationContentId -Feldes schaute. Als ich das reparierte, bekam ich nur ein einziges Ergebnis, als ich drei erwartete. Dies führte mich dazu, die Tabellenzuordnungslogik zu betrachten (siehe zweiten Punkt unten). Korrigiertes Code-Snippet in ConfigurationContentsTable:

%Vor%

Zweitens, für alle EntityRef & lt; & gt; Eigenschaften mit den Attributen [Association(Storage = ...] hatte ich die Eigenschaften ThisKey und OtherKey umgekehrt. Nachdem ich die ConfigurationContentsTable so geändert habe, dass ThisKey verwendet wird und die ConfigurationContextsTable und ConfigurationSectionsTable OtherKey verwenden, habe ich die erwarteten drei unterschiedlichen Ergebnisse festgestellt.

Korrigierter Code für ConfigurationContentsTable:

%Vor%

Korrigierter Code für ConfigurationContextsTable:

%Vor%

Und schließlich korrigierter Code für ConfigurationSectionsTable:

%Vor%     
Sam 04.04.2013, 20:07
quelle

Tags und Links