Ich versuche ein Objekt zu aktualisieren, das ich zuvor mit EntityFramework 4.1 (CodeFirst) gespeichert habe
Die Klasse Job hat die folgenden Eigenschaften ...
%Vor%Das anfängliche Erstellen funktioniert einwandfrei, aber das Update schreibt nur Änderungen an den Zeichenfolgen fest.
Wenn ich die untergeordneten Objekte ändere, zB die JobType
Eigenschaft von JobTypeA
bis JobTypeB
- die Änderung wird nicht übernommen ...
Ich möchte JobType nicht ändern - nur Job.
%Vor%Wenn Sie sich SQL Profiler ansehen - die IDs werden nicht einmal für das Update gesendet - sie sind jedoch für die erste Einfügung!
Wenn Sie den Status auf Modified
setzen, werden nur skalare und komplexe Eigenschaften aktualisiert, nicht Ihre Navigationseigenschaften. Dies geschieht nur durch Änderungserkennung von Entity Framework. Das bedeutet, dass Sie das Original aus der Datenbank laden müssen:
Sie könnten wahrscheinlich auch einige "Tricks" in Ihrem Fall nutzen:
%Vor% Es würde jedoch nicht funktionieren, wenn Sie JobType
auf null
setzen möchten.
Dies ist eine typische Situation, die viel einfacher wird, wenn Sie Fremdschlüssel als Eigenschaften in Ihrem Modell bereitstellen: Mit einem JobTypeId
in Ihrer Entität Job
würde Ihr Code funktionieren, da die FK-Eigenschaft skalar ist und den Status auf setzt Modified
wird diese Eigenschaft auch als geändert markieren.
Tags und Links c# entity-framework ef-code-first code-first