WCF RIA Services框架把原值和更改后的值一起传递给数据访问层。这就允许数据访问层在提交数据更改之前检测数据并发性冲突。数据访问层是通过检测数据源中的当前值是否与Domain *** 作中检索到的值一致来判断冲突的。
我们可以为一个特定的实体自定义如何解决数据并发性冲突,这个方法在冲突确认时被调用。在这个方法中,可以指定步骤来解决冲突。这个方法必须匹配作为解决冲突的方法所需的签名。格式应如下:
返回一个Boolean值。 有个Resolve名字前缀或有ResolveAttribute。 接受四个参数(current entity,original entity,store entity,和一个指定是否本 *** 作是个删除 *** 作的值)
自定义解决数据并发性冲突
在domain service中,添加一个匹配做为解决方法所需签名的方法。 在这个方法中添加解决冲突的代码。下面的代码示例了一个名为ResolveProduct的方法,这个方法在冲突发生时会从domain *** 作中合并数据。 这个自定义的冲突解决代码,通过使用ResolveOption枚举值来指定合并数据。?
1 2 3 4 5 6 | public bool ResolveProduct(Product currentProduct,Product originalProduct,Product storeProduct,Boolean deleteOperation) { return base .Resolve(currentProduct,originalProduct,storeProduct,ResolveOption.MergeIntoCurrent); } |
如何向Domain service添加显式事务
可以在Domain Service中添加显式事务,来执行一组变化。
创建一个显式事务
在项目中,添加对System.Transactions程序集的引用。也可以从[program files]\Reference AssemblIEs\Microsoft\Framework\.NETFramework\[version]\System.Transactions.dll 找打。 在Domain Service中,重载submit方法。 创建一个TransactionScope,它打包了对基类中submit方法的调用。 在完成事务之前,检查ChangeSet对象的HasError成员属性。示例如下:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [EnableClIEntAccess()] public class DomainService1 : DomainService { public overrIDe bool submit(ChangeSet changeSet) { bool result = false ; using (var tx = new TransactionScope( TransactionScopeOption.required, new Transactionoptions { IsolationLevel = IsolationLevel.ReadCommitted }) ) { result = base .submit(changeSet); if (! this .ChangeSet.HasError) { tx.Complete(); } } return result; } } |
以上是内存溢出为你收集整理的Silverlight WCF RIA服务(十四)数据 4全部内容,希望文章能够帮你解决Silverlight WCF RIA服务(十四)数据 4所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)