Entity Framework - wofür genau und wie anfangen

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Hallo,

    ich muss sagen, nach langen Herumprobieren habe ich es mit Migration hinbekommen eine Tabelle zu erstellen.
    Auch einfache Abfragen und Änderungen klappen.

    Ich denke das passt soweit.
    Ich werde jetzt wahrscheinlich einen weiteren Thread aufmachen, wo ich nochmals genauer auf die Mehrbenutzerfähigkeit eingehe.

    Manchmal ist es doch am besten, wenn man selbst ein wenig herumprobiert.

    Viele Grüße
    Florian
    ----

    WebApps mit C#: Blazor
    Hallo

    Als kleinen Tipp kann ich dir mitgeben während der Entwicklung ohne Migrations zu arbeiten. Da wirst du nicht fertig mit dem generieren der Migrationscripts.
    Ich mache das immer so das ich während der Entwicklung immer wenn ich etwas am Model ändere die DB lösche und mit dbContext.Database.EnsureCreated() gehe ich dann sicher das die DB beim Programmstart erstellt wird sollte diese nicht bereits existieren.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hallo,

    Nofear23m schrieb:

    Du hast recht, es ist über die ID mit dem anderen Objekt "verbunden" bzw. kann und wird von EF auch über diese die Verbindung zwischen den beiden Entitäten hergestellt. Aber. EFmacht dir hier das Leben leichter indem es (vorausgesetzt mal will das und gibt es auch in der Abfrage an) dir das Property befüllt.

    hier habe ich tatsächlich nochmal eine Frage.

    Hier schnell éin Auszug aus der Modelklasse Song und Genre:

    C#-Quellcode

    1. public class Song
    2. {
    3. public int SongID { get; set; }
    4. public string Name { get; set; }
    5. public int Duration { get; set; }
    6. public int GenreID { get; set; }
    7. public Genre Genre { get; set; } //Hier wird direkt das Genre hineingeschrieben
    8. }


    C#-Quellcode

    1. public class Genre
    2. {
    3. public int GenreID { get; set; }
    4. public string Name { get; set; }
    5. public List<Song> Songs { get; set; }
    6. }



    Wie du geschrieben hast wird in das Genre Feld automatisch das verknüpfte Genre hineingeschrieben.
    Meine Frage nun: Brauche ich im Model noch explizit den Fremdschlüssel angeben, oder kann das EF selbst, oder muss man das dann über die FluentAPI machen?
    Weil ich brauche ihn ja später nicht mehr (da ich ja schon das Genre habe)

    Viele Grüße
    Florian
    ----

    WebApps mit C#: Blazor
    Hallo

    Soweis ich weis musst du nicht, es empfiehlt sich aber. Alleine aus Performancegründen. Soweit ich weis würde EF die Fremdschlüsselspalte in der DB auf jeden Fall anlegen. Klar, braucht es ja auch.
    Aber wenn du das Property in der Klasse nicht hast, hast du Nachteile. Wenn du einen Song abrufst von dem du im Moment noch nicht die Gerneinfos benötigst hast du (wenn du willst) dennoch die GenreID ohne dem Overhead eines Joins über die Genre-Tabelle.

    Willst du dann später (weil der User vieleicht wo klickt) die Genreinfos zum aktuellen Song abrufen müsstest du ja ohne das du die GenreID hast wieder den Song inkl. Genre (also mit einem Join) abrufen, was sowohl an der Datenbankseite länger dauert also auch an der Übertragung - speziell wenn diese über WAN geht - was unnötig ist. Hast du die GenreID kannst du geziehlt die Genre mit der GenreID XY abrufen und dem Tracker Attachen sofarn fürs Tracking notwendig.

    Du merkst also schon, hier gibt es doch einige zu beachten bzw. was man mit dem richtigen Model optimieren kann.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##