我有一個相當簡單的問題,我似乎無法找到答案。我有一個Ria Services的Silverlight應用程序。在類的DomainService我有類似下面的更新方法:WCF Ria服務ChangeSet.GetOriginal():它是如何工作的?
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
}
的問題是,Name屬性始終是空的。事實上,除Id以外的每個字段都有默認值。我試着搜索GetOriginal方法是如何工作的,但找不到任何幫助。在我看來,它似乎試圖根據從客戶端發送回服務器的更改來重建服務器上的原始對象。
或者,也許任何人都知道一個更好的方法來檢查更新過程中對象的某個屬性是否被更改?我可以將它與數據庫中的值進行比較,但似乎我應該避免對數據庫進行額外的調用。
任何幫助再次非常感謝:-)
編輯: 只是發現了關於RoundTripOriginalAttribute。這似乎有伎倆。我是唯一一個認爲RIA可以被證明更好一點的方式嗎?
是的。 MSDN上的文檔不是很好。看一看RIA Services 1.0破解文檔,其中包含一些很好的信息,包括RoundTripOriginalAttribute http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=RiaServices&DownloadId=8313 – robertkroll 2010-10-20 14:28:13