小编San*_*r_V的帖子

WCF Ria Services ChangeSet.GetOriginal():它是如何工作的?

我有一个相当简单的问题,我似乎无法找到答案.我有一个带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
    }
Run Code Online (Sandbox Code Playgroud)

问题是Name属性始终为空.实际上除Id之外的每个字段都有默认值.我已经尝试过搜索GetOriginal方法如何工作,但找不到任何帮助.看起来它似乎试图根据从客户端发送回服务器的更改来重建服务器上的原始对象.

或者也许任何人都知道更好的方法来检查更新期间对象的某个属性是否已更改?我当然可以将它与数据库中的值进行比较,但似乎我应该避免对数据库的额外调用.

任何帮助再次非常感谢:-)

编辑:刚刚发现RoundTripOriginalAttribute.这似乎可以解决问题.我是唯一一个认为RIA可以记录得更好的方式吗?

changeset wcf-ria-services domainservices

6
推荐指数
1
解决办法
3310
查看次数