利用WCF RIA服务从服务器公开数据
在服务器与客户端的数据交互过程中,并发检查、事务处理以及通信技术的选择都是至关重要的环节。下面将详细介绍这些方面的内容。
并发检查
在数据库操作中,为了避免多个用户同时修改同一数据导致的数据不一致问题,需要进行并发检查。并发检查通常涉及实体的三个版本:
- 原始版本 :最初从服务器检索时实体的状态。
- 当前版本 :客户端对原始版本进行更新后,发送回服务器以提交到数据库的版本。
- 存储版本 :在更新之前数据库中当前存在的实体版本。
识别并发冲突的常见策略是在数据库表中设置一个列,每当行发生更改时更新该列。常见的列类型包括:
- 时间戳/行版本列
- 唯一标识符(即GUID)列
- 日期时间列
当对实体执行更新操作时,RIA Services会检索数据库中当前存储的实体,并将客户端发回的并发检查属性的原始值与数据库中的存储值进行比较。如果值不同,则识别出并发冲突。例如,另一个用户在原始版本从服务器检索后更新了实体,就可能导致该属性的值发生变化。
如果实体上没有可用于并发检查的单个属性,也可以比较实体的多个(或所有)属性的原始版本和存储版本,若任何值不同则引发并发冲突。不过,这种方法比单列方法更繁琐,但可以选择不希望丢失更改的属性,同时忽略其他不重要的更改。
配置实体模型以检查并发冲突
默认情况下,RIA Services(和实体框架)会直接更新实体而不进行任何并发检查。因此,在更新/删除