Hallo
Wenn deine
EF Core fürt bei Find(id) NUR ein Query ab wenn er die Entität mit der ID noch nicht im ChangeTracker hat. Fundet er die Entität allerdings im ChangeTracker holt er sie aus diesem und führt keinen Routrip zur DB aus.
Das sind so die Feinheiten des EF COre die man wissen muss. Deshalb die Empfhelung des Buchs.
Ein Tipp von mir. Benamse die Methoden des Repository so wie die von EF, ist transparenter aber das ist evtl. geschmacksache.
Ah, dann hast du den Code wohl von meinem Repository. Ja, ich schalte den immer ab und übergeben falls benötigt ein True an die Methode wie z.b. der
Tipp von mir - siehe HomeStorage. Den DB Context und nur diesem als eigene Assembly erstellen. So kannst du alles andere wie das Model ruig in VB machen. Ich finde es jetzt nicht so schlimm, klar man fühlt sich als VBler ausgeschlossen aber gut, mit der einen Klasse kann ich leben.
Schöne Grüße
Sascha
kaifreeman schrieb:
Am Delete gefällt mir nicht das ich mir das eigentlich bereits vorhandene Object nochmals aus der DB holen muss, wäre es hier nicht einfacher das bereits in der Viewmodel Klasse vorhandene Object vom Typ Entität doch zugänglich zu machen?
Ist wahrscheinlich mehr eine Optik geschickte es würde halt eine Query ersparen...
Wenn deine
Get
Methode des Repository der Wrapper für Find
des DBContexts ist was ich vermute wird in diesem Fall kein Query abgesetzt.EF Core fürt bei Find(id) NUR ein Query ab wenn er die Entität mit der ID noch nicht im ChangeTracker hat. Fundet er die Entität allerdings im ChangeTracker holt er sie aus diesem und führt keinen Routrip zur DB aus.
Das sind so die Feinheiten des EF COre die man wissen muss. Deshalb die Empfhelung des Buchs.
DbContext.Find
Finds an entity with the given primary key values. If an entity with the given primary key values
is being tracked by the context, then it is returned immediately without making a request to the
database. Otherwise, a query is made to the database for an entity with the given primary key values
and this entity, if found, is attached to the context and returned. If no entity is found, then
null is returned.
Ein Tipp von mir. Benamse die Methoden des Repository so wie die von EF, ist transparenter aber das ist evtl. geschmacksache.
kaifreeman schrieb:
Tja ich hatte per Default den ChangeTracker deaktiviert... (Optional trackings as boolean war false)
Ah, dann hast du den Code wohl von meinem Repository. Ja, ich schalte den immer ab und übergeben falls benötigt ein True an die Methode wie z.b. der
GetAll
Z.b. würde ich mit GetAll(True)
das Tracking für dieses Query einschalten. ACHTUNG: Das Thema ChangeTracking ist ein riesen Performancethema - mich wundert das MS ihn nicht per Default sogar abschaltet. Ohne Changetracker ist EF Core nochmal mehr als doppelt so schnell. Nur so am Rande. Aber wie gesagt - Buch!kaifreeman schrieb:
So mit dem Wissen werde ich jetzt mal meine Anwendung umbauen muss mir auch noch das Thema DBContext und Migration von EF Core geben, schade das EF Core Migration VB nicht unterstützt und man eine C# Klasse basteln muss.
Tipp von mir - siehe HomeStorage. Den DB Context und nur diesem als eigene Assembly erstellen. So kannst du alles andere wie das Model ruig in VB machen. Ich finde es jetzt nicht so schlimm, klar man fühlt sich als VBler ausgeschlossen aber gut, mit der einen Klasse kann ich leben.
Schöne 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. ##
Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.
## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##