Aktualisieren von Datensätzen mithilfe eines Repository-Musters mit Entity Framework 6

8

Ich schreibe eine einfache Blog-Anwendung und versuche CRUD-Operationen in meinem generischen Repository-Muster einzurichten, aber ich erhalte einen Fehler bei meiner Update-Methode, die besagt:

  

'System.Data.Entity.DbSet' enthält keine Definition für   'Entry' und keine Erweiterungsmethode 'Entry' akzeptiert ein erstes Argument von   type 'System.Data.Entity.DbSet' könnte gefunden werden (fehlt eine a   mit Direktive oder einer Assembly-Referenz?)

Ich folgte einem Beitrag, der erklärte, wie um Entry () durch Hinzufügen einer zusätzlichen Indirektionsstufe über DbContext zu fälschen. In MVC 5 erben wir jedoch von IdentityDbContext und nicht von DbContext. Ich habe versucht, die Autoren zu beheben, aber der Fehler bleibt bestehen.

Meine Frage

Wie kann ich meinem Repository in Entity Framework 6 mithilfe von IdentityDbContext eine Aktualisierungsmethode hinzufügen? Wenn wir es nicht so machen sollen, wie aktualisiere ich dann einen Datensatz mit diesem Muster?

Ich sollte beachten, dass alle anderen Methoden wie erwartet funktionieren.

Mein generisches Repository:

%Vor%     
Dan Beaulieu 06.05.2015, 02:05
quelle

2 Antworten

6

Das Update sollte aussehen ( erweitert Dan Beaulieus Antwort ):

%Vor%

RepositoryPattern sieht folgendermaßen aus:

%Vor%

Sie können eine vollständige Erklärung zu der Antwort für Efficient anzeigen Möglichkeit, die Liste der Entitäten zu aktualisieren , um weitere Informationen zu den Details nur eines Updates zu erhalten.

    
Erik Philips 24.02.2017, 00:39
quelle
13

Ok, ich habe das herausgefunden. Der Grund, warum es keine Update -Methode in neuen Repository-Mustern (Entity Framework 6) gibt, ist, weil keine Notwendigkeit für eine besteht. Sie holen Ihren Datensatz einfach per ID ab, nehmen Ihre Änderungen vor und bestätigen / speichern dann.

Zum Beispiel ist dies meine POST-Methode von meinem postController:

%Vor%

RepositoryPattern sieht folgendermaßen aus:

%Vor%     
Dan Beaulieu 06.05.2015 03:34
quelle