2010-12-02 6 views
1

Beim Einfügen/Aktualisieren einer Entität muss ich alle Eigenschaften protokollieren, die sich geändert haben. Lets nehmen 2 Tabellen Kunde und Adresse. Ein Kunde kann viele Adressen haben.Schreiben Sie eine Einfügung oder aktualisieren und prüfen Sie Entity-Änderungen Wie kann ich das tun?

Aufgabe:

Schreibe die Audit-Tabelle alle Eigenschaften, die sich geändert haben?

was ist die Art und Weise eine Update-Methode zu schreiben, wenn Sie das mag nur das tut.

ich gesehen habe, dass Sie Folgendes verwenden:

ObjectStateEntry entry = ObjectStateManager.GetObjectStateEntry(entity); 
    var changes= entry.GetModifiedProperties(). 

nicht sicher, wie Sie tatsächlich die Methode schreiben, obwohl die folgende halbe Versuch: können Sie mir einige Hinweise geben oder mir helfen mit dem Code ?

private bool UpdateCustomer(Customer modifiedCustomerDto) 
    { 
    using (var ctx = new MyContext()) 
    { 
     var oldCustomer = ctx.Customers.Where(xx => xx.CustomerId == modifiedCustomerDto.id).Single(); 
     oldCustomer.Name = modifiedCustomerDto.Name; 
     oldCustomer.Surname = modifiedCustomerDto.Surname; 

     foreach (var oldAddress in oldCustomer.Addresses) 
     { 
      //if it's a new Address add it 
      //else updateit 
      //Write to the audit table all the properties that have changed. 
     } 

     //Get Modified properties and write to the auditlog 

     ctx.SaveChanges(); 
    } 
    } 

Antwort

1

Werfen Sie einen Blick auf this post mit dem SavingChanges event beschäftigen.
Sie können alle Eigenschaften des Objekts überprüfen, das in diesem Ereignis aktualisiert wird, und sie mit Ihrem benutzerdefinierten Code protokollieren.

+0

Vielen Dank für Ihre Antwort und Links.Sieht proms noch immer nicht sicher, wie ich alles zusammenkleben.Ich meine ich habe eine CustomerDto und muss mit bestehenden Kunden vergleichen und schreiben Sie die Änderungen in der Protokolltabelle.Weitere Hinweise? – user9969

+0

Verwenden Sie das OnPropertyChanged-Ereignis, um eine Liste geänderter Eigenschaften zu erstellen, und führen Sie dann die Protokollierung im OnSavingChanges-Ereignis durch. Mehr über OnPropertyChanged: http://msdn.microsoft.com/en-us/library/cc716747.aspx – Devart

Verwandte Themen