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.
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%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.
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%Tags und Links c# repository-pattern asp.net-identity entity-framework-6 asp.net-mvc-5