ich Probleme, bin mit Änderungen einer Navigationseigenschaft Erkennung:Entity Framework wird keine Änderungen der Navigationseigenschaften erkennen
Mein Testmodell sieht wie folgt aus:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Address Address { get; set; }
}
public class Address
{
public int Id { get; set; }
public string Name { get; set; }
}
habe ich erstellt und gespeichert ein Objekt vom Typ Person, dem sowohl Name als auch Adresse zugewiesen sind. Mein Problem ist, dass, wenn ich das Person-Objekt von der Datenbank zurückgeholt habe und ich die Address-Eigenschaft ändere (z. B. nach Null), dann die e.f. erkennt die Änderung nicht! Mein Code ist dies:
using (var ctx = new EFContext())
{
Person p = ctx.People.First();
//p.Address IS NOT NULL!
p.Address = null;
var entry = ctx.Entry(p);
}
Warum ist entry.State
Unverändert?
Bearbeiten: Wenn ich die SaveChanges aufrufen, wird der Datensatz korrekt gespeichert (die Adresse wird null)!
Bearbeiten 2: Ich habe die Fremdschlüssel-Eigenschaft als Billy vorgeschlagen und wenn ich das Person-Objekt im Visual Studio inspizieren der Staat ist Modifiziert .. Wenn ich nicht mit dem Debugger die Werte des Objekts zu überprüfen stoppen Zustand ist unverändert!
Bearbeiten 3: Laden des Person-Objekts mit ctx.People.Include (x => x.Address) .First(); löst das Problem. Gibt es eine Möglichkeit, den Aufruf von Include zu vermeiden und die Address-Eigenschaft anstelle von AddressId weiterhin zu ändern?
Was passiert, wenn Sie ctx.DetectChanges() aufrufen? – Maarten
Nichts. Das Ergebnis ist das gleiche !! – Mones