我有一个相当简单的问题,我似乎找不到答案。我有一个带有 Ria Services 的 silverlight 应用程序。在 DomainService 类中,我有一个如下所示的更新方法:
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 可以更好地记录的人吗?