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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top