我是wcf的新手,我编写了一个wcf Web服务,可以像对更新一样对数据库执行操作。该服务由silverlight客户使用。当多个用户尝试对某个对象进行某些更改时,我希望wcf服务对其进行管理。例如如果某个用户确认某个对象(db中的更新操作),则不允许其他用户对其执行相同的操作。我不知道如何在WCF中实现同步。
请帮忙 感谢名单
答案 0 :(得分:0)
您的同步称为并发问题,此类问题必须在数据库中执行。我猜每个RDMS(关系数据库管理系统)都有行版本的特殊类型,用于处理乐观并发。行版本列具有特殊含义,您无法设置其值,但每次修改记录时RDMS都会更改其值。 SQL Server在Timestamp数据类型中提供行版本。
要使用乐观并发,您需要将timestamp列添加到要处理它的每个表中。然后你必须使用这个专栏。您必须使用每条记录加载它,并且每次更新/删除都必须在WHERE子句中使用其值。然后,您必须测试影响记录的数量,以了解更新/删除是否成功并处理不成功的修改。如果您直接使用DbCommand和DbDataReader相关的分类,这是一般方法。 LinqToSql,DataSets和Entity框架对乐观并发处理具有相同级别的支持。
顺便说一下。可以在没有Timestamp列的情况下使用乐观并发,但在这种情况下,您必须将更新的值与旧值一起存储,然后在update命令的WHERE子句中使用旧值。
祝你好运, 拉吉斯拉夫