Dynamic CRM 2013学习笔记(三)快速创建实体 EntityCreater

一、实体简介

实体用于在 Microsoft Dynamics CRM 中建立业务数据模型和管理业务数据。例如,可以使用客户、市场活动和事件(案例)等实体跟踪和支持销售、市场营销和服务活动。实体具有一组属性,每个属性表示一个特定类型的数据项。例如,客户实体具有 Name、Address 和 OwnerId 属性。从概念上讲,实体类似于数据库表,实体属性对应于表列。在 Microsoft Dynamics CRM 中创建实体记录(或记录)类似于在数据库表中添加记录。实体划分成三个类别:系统、业务和自定义。作为处理业务数据的开发人员,您将使用业务和自定义实体。Microsoft
Dynamics CRM 使用系统实体处理所有内部流程,如工作流和异步作业。不能删除或自定义系统实体。

业务实体是默认安装的 Microsoft Dynamics CRM 的一部分,它们显示在自定义用户界面中。例如,客户、联系人和信件都是业务实体。安装 Microsoft Dynamics CRM 后,可以向其中添加自定义实体以满足组织的特定业务需求。在 Microsoft Dynamics CRM 解决方案中,可以将业务和自定义实体以及属性设置为可自定义或不可自定义。可以通过以下方式修改可自定义实体:重命名可自定义实体、添加新属性或更改各种设置,如重复检测或队列支持设置。不能修改不可自定义的实体。

二、存在的问题

  1. 我们一般在CRM系统上通过界面来创建实体,但这个效率太低了,而且有些属性不能修改,这样有时就会出现这样的问题:有时为了修改实体的一个属性,但这个属性却是不能修改的,这时我们不得不把整个实体删除,再把字段一个个的添加。
  2. 如果项目里人多了,虽然有命名规范文档,比如,我们一般把lookup类型的字段后面加上id,但有时一不小心有兄弟就会忘记了。

三、解决方法

于是就想着通过工具来生成实体,网上搜索后,没发现有什么好的实体生成工具。于是只得自己动手,创建entity及各类型的属性:

1. 实体创建

  1: CreateEntityRequest request = new CreateEntityRequest
  2: {
  3:     HasNotes = false,
  4:     HasActivities = false,
  5:     Entity = new EntityMetadata
  6:     {
  7:         IsActivity = false,
  8:         SchemaName = customEntityName,
  9:         DisplayName = new Label(entity.DisplayName, 1033),
 10:         DisplayCollectionName = new Label(entity.DisplayName, 1033),
 11:         OwnershipType = OwnershipTypes.UserOwned,
 12:         IsAvailableOffline = true
 13:     }
 14: };

2. string属性

  1: [AttributeType("Single Line of Text")]
  2: public class StringAttributeeCreater : AttributeCreater
  3: {
  4:     public override AttributeMetadata Create()
  5:     {
  6:         AttributeMetadata attribute = new StringAttributeMetadata
  7:         {
  8:             SchemaName = Field.PhysicalName,
  9:             RequiredLevel = GetRequiredLevel(),
 10:             MaxLength = 100,
 11:             FormatName = StringFormatName.Text,
 12:             DisplayName = new Microsoft.Xrm.Sdk.Label(Field.DisplayName, 1033)
 13:         };
 14:         return attribute;
 15:     }
 16: }
3. optionset 属性
  1: [AttributeType(OptionSetAttributeeCreater.OptionSet_STR)]
  2: public class OptionSetAttributeeCreater : AttributeCreater
  3: {
  4:     public const string OptionSet_STR = "Option Set";
  5:     public override AttributeMetadata Create()
  6:     {
  7:         PicklistAttributeMetadata attribute = new PicklistAttributeMetadata
  8:         {
  9:             RequiredLevel = GetRequiredLevel(),
 10:             SchemaName = Field.PhysicalName,
 11:             DisplayName = new Microsoft.Xrm.Sdk.Label(Field.DisplayName, 1033),
 12:             OptionSet = new OptionSetMetadata()
 13:         };
 14: 
 15:         attribute.OptionSet.IsGlobal = true;
 16:         if (!string.IsNullOrEmpty(Field.Remark))
 17:         {
 18:             attribute.OptionSet.Name = Field.Remark;
 19:         }
 20:         else if (!string.IsNullOrEmpty(Field.TypeRule))
 21:         {
 22:             string[] arr = Field.TypeRule.Split(‘\n‘);
 23: 
 24:             foreach (string item in arr)
 25:             {
 26:                 string[] arr2 = item.Split(‘,‘, ‘,‘);
 27:                 if (arr2.Length == 2)
 28:                 {
 29:                     int value = int.Parse(arr2[0]);
 30:                     attribute.OptionSet.Options.Add(new OptionMetadata(new Microsoft.Xrm.Sdk.Label(arr2[1], 1033), value));
 31:                 }
 32:             }
 33:         }
 34:         return attribute;
 35:     }
 36: }
其它属性以此类推,这里就不一一介绍了,大家可以查看下sdk,里面有详细的介绍。

四、EntityCreater工具

1. 通过excel列出实体名和字段名
 
            (EntityCreaterGuide.xlsx)

下面是个例子:

2. 首次使用EntittyCreater里,要修改下CRMEntityCreater.exe.config里面的连接信息

<add name="name" connectionString="Url=http://xxxx:5555/xxx/; Domain=xxxx; Username=xxxx; Password=xxx;"/>

运行EntityCreater,并把保存好的excel文件拖入左上角的框框里,这时它会把里面所有的sheet都显示出来,我们可以依次创建这些实体:

3. 点击左边中间的按钮 Generate Phical Name, 自动生成 phisical name:

4.这时,就可以通过点击 Create Entity来创建实体了。如果只是添加些字段,也可以只勾选Fields:

5. 创建完成后,我们可以通过Save to Excel来保存生成的Phical Name到excel里,还可以点击View Result来查看创建过程中的log信息

下载 EntityCreater( 提取码 aef0)

Dynamic CRM 2013学习笔记 系列汇总

时间: 2024-08-23 10:40:29

Dynamic CRM 2013学习笔记(三)快速创建实体 EntityCreater的相关文章

Dynamic CRM 2013学习笔记(三十八)流程1 - 操作(action)开发与配置详解

CRM 2013 里流程有4个类别:操作(action).业务流程(business process flow).对话(dialog)和工作流(workflow).它们都是从 setting –> Process 进入,然后点击New按钮来创建: 这篇主要介绍操作:什么是操作.什么时候使用操作.如何创建以及如何调用 一.什么是操作 操作是CRM 2013 新增加的一个功能,用来扩展系统的标准功能.业务人员可以用它来实现业务逻辑,然后开发人员可以在系统事件里(比如update,create)来使用

Dynamic CRM 2013学习笔记(三十五)自定义审批流6 - 审批通过后,再审批 - 二次审批

最近有个特殊的需求,客户想做二次审批,就是审批通过后,再走一次审批流程.最开始一想,这还不简单,审批通过后,直接把状态改成draft就完了,后来一试,发现一堆问题,比如第一次审批完后,界面是不允许修改的,直接改成draft就又可以修改了:再比如审批活动记录的查找以及死循环的问题等等.于是自己动手单独写了一个公用的再审批插件,下面介绍详细的实现步骤:   一.添加字段以控制再审批的次数 添加一个字段 new_approval_count, 再审批一次就把它加1.如果只要再审批一次,那么大于1就退出

Dynamic CRM 2013学习笔记(三十四)自定义审批流5 - 自动邮件通知

审批过程中,经常要求自动发邮件:审批中要通知下一个审批人进行审批:审批完通知申请人已审批完:被拒绝后,要通知已批准的人和申请人.下面详细介绍如何实现一个自动发邮件的插件:   1. 根据审批状态来确定要通知哪个人或哪个角色 状态为2 - 审批中时,查找下一个审批人 /// <summary>/// 下一个审批人/// </summary>/// <returns></returns>private List<Guid> GetNextStepPe

Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理

上次介绍过节点的基本配置<Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置>,这次介绍下规则节点,因为有时流程里会有一些分支.合并,这时就要用到规则节点.下面根据一个真实的流程图来讲解如何配置规则节点:   一.先分析流程图 上面30,40就是规则节点,因为是有条件进入的. 其中40要拆分成一个普通节点,一个规则节点:普通节点是从上面直接下来的流程,规则节点是从右边下来有条件的流程   二.模板里的流程节点定义 根据上面的流程分析,我们定义下面的流程节点,其

Dynamic CRM 2013学习笔记(三十七)自定义审批流7 - 初始化(整套审批流下载、安装)

  前面介绍了自定义审批流的配置.使用,这篇介绍下如何进行初始化.   一. 下载   从下面的地址下载整个审批流: http://yunpan.cn/cJR65k2Grj3Ss  访问密码 8065 下载完后,一共有三块内容:   二.初始化 1. Web 把CRMWFExtends文件夹copy到ISV目录下 默认的目录应该是C:\Program Files\Microsoft Dynamics CRM\CRMWeb\ISV   2. 解决方案 导入solution:ApprovalWork

Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置

上次介绍了<Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示> 以及如何配置自定义审批流的按钮:<Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮>,这次接着介绍如何配置审批流的节点及节点关系.     一. 模板头: 二.流程节点:        一共有三种节点:开始节点,中间节点,结束节点: 1.  开始节点: 2. 中间节点: .3.  结束节点:       三.流程节点关系:   四.实体配置 1.添加二个字段:

Dynamic CRM 2013学习笔记(三十六)全部禁用、部分禁用&rdquo;自动保存&rdquo; 功能

我们都知道CRM2013新增了一个自动保存的功能:每30秒或跳转到新的记录前会自动保存.但有时考虑到性能或其它原因,我们有时要禁用此功能.下面介绍如何在所有form里禁用或在部分form里禁用此功能.   一.全部禁用 全部禁用很简单,依次打开Seeting –> administrator –> system settings, 然后如下图把Enable auto save on all forms 设为No即可   二.部分禁用 上面的方法是针对所有的form.如果我们只想在指定的form

Dynamic CRM 2013学习笔记(三十一)自定义用excel导入实体数据

有一个实体的子表数据量太大,于是客户想用execel来导入实体数据.首先想到的是用系统自带的Import Data,客户嫌太麻烦,比如lookup字段要做map等. 下面是具体的实现步骤: 一.定义excel数据模板 1. 利用系统自带的Download Template For Import下载系统自带的模板 2. 去掉不需要的列,比如有些列是自动计算,自动赋值 3. 保存为excel文件,并copy到crm server里的isv目录下 4. 定义一个按钮,并指定调用下面的js: // ex

Dynamic CRM 2013学习笔记(三十)A proxy type with the name account has been defined by another assembly

在CRM中使用linq时,有时会报这个错误: A proxy type with the name account has been defined by another assembly. Current type: Account, MyAssembly, Version=1.0.0.4, Culture=neutral, PublicKeyToken=be9afbacb707a086, Existing type: Account, CustomPages, Version=1.0.0.0