Entity Framework Änderung der Verfolgung von API- und Referenzeinträgen
-
26-10-2019 - |
Frage
Ich möchte generische Prüfungscode auf meine DBContext -Unterklasse schreiben.
foreach (var entry in this.ChangeTracker.Entries<MyClass>())
{
if (entry.State == EntityState.Modified)
{
var entityProperties = entry.Entity.GetType().GetProperties();
foreach (var entityProperty in entityProperties)
{
DbMemberEntry propertyEntry = entry.Member(property.Name);
if (propertyEntry is DbPropertyEntry)
{
// IsModified available
}
else if (propertyEntry is DbReferenceEntry)
{
// IsModified not available
}
}
}
}
1) Wenn ich nur eine Referenzeigenschaft ändere, ist der Eintragstaatwert "unverändert".
2) Auch wenn Punkt 1 auf "modifiziert" wurde, scheint die DBReferenceStry -Klasse weder eine ismodifizierte Eigenschaft noch einen ursprünglichen Wert zu haben.
Ich gehe davon aus, dass dies möglich ist, weil EF dies verfolgen muss.
Kann jemand helfen?
Danke, Ben
Lösung
Ja Referenzeintrag (Navigationseigenschaft) verfolgt keine Änderungen. Es liegt in der Verantwortung für ausländische Schlüsseleigenschaften (im Falle einer ausländischen Schlüsselvereinigung) oder für die separate Verfolgung von Objektverfolgungen des unabhängigen Vereins. In der ObjectContext -API können Sie diese Objekte erhalten ObjectStateManager
Aber es sieht so aus, als hätte die DBContext -API dies nicht zur Verfügung. Ich stellte eine Frage dazu MSDN Forum.