• Dynamics CRM 2015 Update 1 系列(4): 自己定义主键


    Alternate Keys。 还是和系统集成相关的一个重量级Feature。使用该Feature能极大的提高开发数据集成接口的时间成本以及接口的执行效率。


    在之前的Dynamics CRM 版本号中。我们仅仅能通过Entity的主键去推断记录的唯一性,如今我们能够通过使用Alternate Keys来推断记录的唯一性。更有趣的则是。我们能够自己去配置实体的Alternate Keys
    眼下Alternate Key仅仅支持文本和数字类型的字段,而且每一个实体最多仅仅能配置5个Key。只是这已经非常不错了,配置方法也非常easy:Setting–>Customization–>Entity–>Key
    这里写图片描写叙述

    假设我们输入的数据违法了Alternate Key规则,其会提演示样例如以下错误:
    这里写图片描写叙述

    改功能对终端用户没什么太大的影响,可是对广大的开发者以及系统管理员来说,其真实一个非常牛X的功能,有了它,从此省去了花在字段映射上的时间了。以下这个代码片段演示了,怎么获取一个Alternate Key的员数据 。以及怎么使用它去替换Entity Primary Key

    RetrieveEntityKeyRequest req1 = new RetrieveEntityKeyRequest();
                req1.LogicalName = "new_accountkeyforerp";
                req1.EntityLogicalName = "account";
    
                RetrieveEntityKeyResponse rep1 = CrmSvc_Online.Execute(req1) as RetrieveEntityKeyResponse;
    
    
    
    
                string accountNumber = "2";
                string accountName = "Account2";
    
                Entity acc1 = new Entity("account");
                acc1.Id=Guid.Parse("{1B9D2BC3-7A0F-4D94-950A-B367D032092F}");
                acc1.Attributes.Add("accountnumber", accountNumber);
                acc1.Attributes.Add("name", accountName);
    
                UpsertRequest upsertReq1=new UpsertRequest();
                upsertReq1.Target=acc1;
    
                CrmSvc_Online.Execute(upsertReq1);
    
                //uses unique key to update/delete account
    
                KeyAttributeCollection keys=new KeyAttributeCollection();
                keys.Add("accountnumber",accountNumber);
                keys.Add("name",accountName);
    
    
                Entity acc2 = new Entity("account",keys);
                acc2.Attributes.Add("telephone1", "1522222222");
                CrmSvc_Online.Update(acc2);
    
    
                Entity acc3 = new Entity("account", keys);
    
                DeleteRequest req = new DeleteRequest();
                req.Target = new EntityReference("account", keys);
    
                CrmSvc_Online.Execute(req);

    假设大家的项目里面涉及到大量的数据接口,最好还是试试该方法来设计你们的程序吧。

  • 相关阅读:
    CSharp Oracle 登陆
    Oracle基本流程语句
    数据库设计三大范式
    自己总结一些操作数据库的方法
    常用数据库取得前几行的方法
    Intellij idea创建javaWeb以及Servlet简单实现
    idea发布到tomcat缺少jar
    回调函数
    spring笔记
    动态代理
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5363480.html
Copyright © 2020-2023  润新知