2010-10-15 5 views
6

Ich habe eine ziemlich einfache Frage, auf die ich nicht die Antwort finden kann. Ich habe eine Silverlight App mit Ria Services. In der Klasse Domainservice habe ich eine Update-Methode wie unten:WCF Ria Services ChangeSet.GetOriginal(): Wie funktioniert es?

public void UpdateConversationState(ConversationState currentConversationState) 
    { 
     var original = ChangeSet.GetOriginal(currentConversationState); 
     if (original != null) 
      ObjectContext.ConversationStatesRepository.AttachAsModified(currentConversationState, original); 
     else 
      ObjectContext.ConversationStatesRepository.Attach(currentConversationState); 
     currentConversationState.UpdDat = DateTime.Now; 
     if(original.Name != currentConversationState.Name) 
      //Do something extra 
    } 

Das Problem ist, dass die Name-Eigenschaft ist immer leer. Tatsächlich hat jedes Feld außer der Id Standardwerte. Ich habe versucht zu suchen, wie die GetOriginal-Methode funktioniert, kann aber keine Hilfe finden. Es scheint mir so zu sein, als ob es versucht, das ursprüngliche Objekt auf dem Server basierend auf den Änderungen wiederherzustellen, die von Client zu Server zurückgeschickt werden.

Oder vielleicht jemand weiß eine bessere Möglichkeit zu überprüfen, ob eine bestimmte Eigenschaft eines Objekts während eines Updates geändert wurde? Ich könnte es natürlich mit dem Wert in der Datenbank vergleichen, aber es scheint, als ob ich diesen zusätzlichen Aufruf an die Datenbank vermeiden sollte.

Alle wieder Hilfe ist sehr willkommen :-)

EDIT: Gerade über die RoundTripOriginalAttribute herausgefunden. Dies scheint den Trick zu machen. Bin ich übrigens der Einzige, der denkt, RIA könnte ein bisschen besser dokumentiert werden?

+0

Ja. Die Dokumentation auf MSDN ist nicht großartig. Werfen Sie einen Blick auf das Dokument RIA Services 1.0 zum Brechen von Änderungen, das einige gute Informationen enthält, darunter RoundTripOriginalAttribute http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=RiaServices&DownloadId=8313 – robertkroll

Antwort

3

Nun, ich war auch auf der Suche nach einem Weg Track Entity ändert sich mit EF4 und nach einigem googlen habe ich festgestellt, dass Sie das "RoundTripOriginal" -Attribut auf die Eigenschaften der Entität, die Sie verfolgen möchten, weil RIA (standardmäßig) sendet die ursprünglichen Werte nicht an den Server zurück.

Ich habe noch einige Bedenken zu diesem und ich einige der Gurus gestellt:

http://forums.silverlight.net/forums/t/218332.aspx

Das ist für mich gearbeitet, aber ich nicht noch denken, ist der beste Weg, sie aus.

Hoffe, das hilft.

Verwandte Themen