RIA确实存在任何并发问题吗?

问题描述

| 在我所指的RIA服务的多元化视频中,他们有一个更新代码,如下所示:
public void UpdateProspect(Prospect currentProspect)
{
    currentProspect.LastUpdate = DateTime.Now;
    ObjectContext.Prospects.AttachAsModified(currentProspect,ChangeSet.GetOriginal(currentProspect));
}
我的第一个问题是此更新将如何引起问题?为了显示问题,他启动了2个silverlight客户,然后从第一个客户更新了该项目,并且很好地进行了补货。然后,他去第二个客户端进行更新,并引发错误。为什么RIA会引发错误?第一次更新有什么关系?我认为这确实是错误的,我们需要再次编写一些特殊的代码来解决EntityConflict,然后再次将批处理提交到服务器。这样合适吗 哦,我忘了他将ConcurrencyMode设置为Fixed。我的第二个问题是何时将ConcurrencyMode设置为Fixed?默认情况下,该模式设置为“无”。 提前致谢:)     

解决方法

        这是由于过时读取导致的竞争状况。考虑以下: 两个客户获得ѭ1的副本-称为版本1 A修改了
LastUpdate
属性,该对象现在是版本2 A保存
Prospect
B修改
LastUpdate
属性。对于客户端B,该版本现在为版本2,但是客户端B \的版本2与客户端A的版本不同 B保存
Prospect
-这将覆盖客户端A的更改! 这里的问题是B无法知道A进行了任何更改。抛出该异常是为了防止竞争条件意外删除数据。 解决方案是捕获此异常并报告您在编辑ѭ1时已对其进行了更改,然后重新加载它。 您可以在此处找到有关使用ѭ7的更多信息。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...