关闭

Dynamics CRM 2015 Update 1 系列(6): 并发执行优化 - Optimistic Concurrency

1691人阅读 评论(0) 收藏 举报
分类:

在使用企业级软件的时候,我们最怕碰到的就是数据的脏读和脏写了,但是这似乎是永远无法避免的痛,随着并发访问的提示,数据的出错率往往是直线攀升。
对于某些对数据完整性要求严格的场景,我们往往需要花大量的时间来实现事务的分隔以及数据的锁定。比如:订票模块,我们并不希望出现实际订阅数大于实际票数,这样尴尬的场景吧。
在Dynamics CRM 2015 Update1 中,我们可以轻松使用OC功能来控制数据的读写安全性,保证我们的数据安全性。目前该功能只正对两类API生效:UpdateRequest和DeleteRequest。
我们可以为这两类API指定ConcurrencyBehavior开关:永远覆盖,默认或者检查冲突。我们看看下面的代码片段吧:

  QueryExpression query = new QueryExpression();
            query.EntityName = "account";
            query.Criteria.AddCondition(new ConditionExpression("name", ConditionOperator.Equal, "account1"));

            EntityCollection result = CrmSvc_Online.RetrieveMultiple(query);

            if (result.Entities.Count > 0)
            {
                Entity account = result.Entities[0];
                account["telephone1"] = "123456789";

                UpdateRequest uptReq = new UpdateRequest();
                uptReq.Target = account;
                uptReq.ConcurrencyBehavior = ConcurrencyBehavior.Default;

                CrmSvc_Online.Execute(uptReq);


            }

如果在调用UpdaeRequest之前,我们修改了这个Account记录,那么系统会提示如下错误。
这里写图片描述

2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    Dynamics CRM 使用技巧(微信公众号)
    个人资料
    • 访问:1221806次
    • 积分:17079
    • 等级:
    • 排名:第592名
    • 原创:395篇
    • 转载:42篇
    • 译文:3篇
    • 评论:365条
    关于作者
    熊宸(网名GhostBear),涉猎技术颇多但有所建树者却少之又少,喜欢倒腾技术和撰写技术博客。目前居住在上海,现从事Dynamics CRM 技术顾问一职。大家可以通过邮箱ghost_bear@163.com与我联系。
    博客专栏
    相关资源
    最新评论