Frage

Ich lerne zur Zeit ein bisschen mehr über Linq-To-Unternehmen - vor allem im Moment über eifrig und verzögertes Laden

.
proxy.User.Include("Role").First(u => u.UserId == userId)

Dies soll den Benutzer laden, zusammen mit allen Rollen, die Benutzer haben. Ich habe ein Problem, aber ich habe auch eine Frage. Es ist nur ein einfaches Modell über L2E lernen erstellt

Ich hatte den Eindruck, dass dies entworfen Dinge stark Typ zu machen - also warum muss ich „Rolle“ schreiben? Es scheint, dass, wenn ich den Namen der Tabelle geändert wird, dann wäre dies kein Kompilierungsfehler erstellen ...

Mein Fehler ist dies:

The specified type member 'Roles' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

Die Lösung unten ermöglicht es mir jetzt den Code schreiben:

proxy.User.Include(u => u.Role).First(u => u.UserId == userId)

Was ist viel schöner!

War es hilfreich?

Lösung

  1. Fügen Sie ist ein Hinweis auf eifrig Last, es ist nicht eifrig Laden nicht erzwingen.
  2. Überprüfen Sie immer die IsLoaded Eigenschaft, bevor etwas verweisen, die Sie gerne hoffen geladen wurde durch Einschließen.
  3. Es gibt Möglichkeiten, ein stark typisierte Objekt in der Include-Anweisung zu setzen, aber es gibt keine Lösung für diese Frage aus dem Kasten mit Entity Framework. Google so etwas wie: Entity Framework ObjectQueryExtension einschließen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top