[Entity Framework] Datensätze anhand von Fremdschlüssel finden

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von fichz.

    [Entity Framework] Datensätze anhand von Fremdschlüssel finden

    Hallo,

    ich arbeite das erste mal mit dem Entity Framework und dazu hab ich mir ein kleines Test-Programm geschrieben um mal ein bisschen rein zu schnuppern.

    Ich habe Folgende Tabellen:

    HandyMarken
    ID, Bezeichnung

    HandyModelle
    ID, Marke, Bezeichnung


    C#-Quellcode

    1. using (var context = new TestDBContext())
    2. {
    3. List<HandyModell> handyModelle = context.HandyModelle.Where(d => d.Marke == marke).ToList(); //<--------- Fehlerzeile
    4. foreach (HandyModell handyModell in handyModelle)
    5. {
    6. cb_modell.Items.Add(handyModell);
    7. }
    8. }


    Ich würde gerne in eine Combobox alle Modelle einer Marke anzeigen.

    Aber ich bekomme folgende Fehlermeldung
    Only primitive types or enumeration types are supported in this context.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „windowsfan“ ()

    An welcher Zeile erhälst du denn den Fehler?

    Sorry, jetzt erst gesehen dass du die Zeile markiert hast.

    Nachtrag:Hier stackoverflow.com/questions/15…supported-in-this-context hat jemand das gleiche Problem und es gibt einen Lösungsvorschlag
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MrTrebron“ ()

    Zeig mal deine Entities her.
    Im Prinzip ist die Meldung ganz logisch. Auch wenn du es hier per LINQ schreibst, muss EF deinen Code in ein SQL-Statement umwandeln. Und da kann es halt nur primitive Datentypen verwenden und keine Objekte.
    Dein SQL-Statement würde ungefähr so aussehen:

    SQL-Abfrage

    1. SELECT * FROM handyModelle WHERE MARKE = marke


    Versuche mal folgendes:

    C#-Quellcode

    1. List<HandyModell> handyModelle = context.HandyModelle.Where(d => d.Marke.Id == marke.Id).ToList();

    SQL-Abfrage

    1. SELECT * FROM handyModelle WHERE MARKE_ID = 1


    Falls du deine ID-Property anders benannt hast musst du es anpassen.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten