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 解决方案中,可以将业务和自定义实体以及属性设置为可自定义或不可自定义。可以通过以下方式修改可自定义实体:重命名可自定义实体、添加新属性或更改各种设置,如重复检测或队列支持设置。不能修改不可自定义的实体。
二、存在的问题
- 我们一般在CRM系统上通过界面来创建实体,但这个效率太低了,而且有些属性不能修改,这样有时就会出现这样的问题:有时为了修改实体的一个属性,但这个属性却是不能修改的,这时我们不得不把整个实体删除,再把字段一个个的添加。
- 如果项目里人多了,虽然有命名规范文档,比如,我们一般把lookup类型的字段后面加上id,但有时一不小心有兄弟就会忘记了。
三、解决方法
于是就想着通过工具来生成实体,网上搜索后,没发现有什么好的实体生成工具。于是只得自己动手,创建entity及各类型的属性:
1. 实体创建
1: CreateEntityRequest request = new CreateEntityRequest2: {3: HasNotes = false,4: HasActivities = false,5: Entity = new EntityMetadata6: {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 = true13: }14: };
2. string属性
1: [AttributeType("Single Line of Text")]2: public class StringAttributeeCreater : AttributeCreater3: {4: public override AttributeMetadata Create()5: {6: AttributeMetadata attribute = new StringAttributeMetadata7: {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 : AttributeCreater3: {4: public const string OptionSet_STR = "Option Set";5: public override AttributeMetadata Create()6: {7: PicklistAttributeMetadata attribute = new PicklistAttributeMetadata8: {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信息
Dynamic CRM 2013学习笔记(三)快速创建实体 EntityCreater的更多相关文章
- Dynamic CRM 2013学习笔记(三十五)自定义审批流6 - 审批通过后,再审批 - 二次审批
最近有个特殊的需求,客户想做二次审批,就是审批通过后,再走一次审批流程.最开始一想,这还不简单,审批通过后,直接把状态改成draft就完了,后来一试,发现一堆问题,比如第一次审批完后,界面是不允许修改 ...
- Dynamic CRM 2013学习笔记(三十八)流程1 - 操作(action)开发与配置详解
CRM 2013 里流程有4个类别:操作(action).业务流程(business process flow).对话(dialog)和工作流(workflow).它们都是从 setting –> ...
- Dynamic CRM 2013学习笔记(三十九)流程2 - 业务流程(Business Process Flows)用法详解
业务流程(Business Process Flows)是CRM 2013 里一个新的流程,它提供了可视化的流程表现.业务人员创建有效.流线型的业务流程让最终用户知道当前在哪.下一步要做什么,用户可以 ...
- Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置
上次介绍了<Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示> 以及如何配置自定义审批流的按钮:<Dynamic CRM 2013学习笔记(二十一)自定义 ...
- Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理
上次介绍过节点的基本配置<Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置>,这次介绍下规则节点,因为有时流程里会有一些分支.合并,这时就要用到规则节点 ...
- Dynamic CRM 2013学习笔记(三十四)自定义审批流5 - 自动邮件通知
审批过程中,经常要求自动发邮件:审批中要通知下一个审批人进行审批:审批完通知申请人已审批完:被拒绝后,要通知已批准的人和申请人.下面详细介绍如何实现一个自动发邮件的插件: 1. 根据审批状态来确定 ...
- Dynamic CRM 2013学习笔记(三十七)自定义审批流7 - 初始化(整套审批流下载、安装)
前面介绍了自定义审批流的配置.使用,这篇介绍下如何进行初始化. 一. 下载 从下面的地址下载整个审批流: http://yunpan.cn/cZ5Rdx5HCt3VF 下载完后,一共有三块内容: 二. ...
- Dynamic CRM 2013学习笔记(三十)Linq使用报错 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. Curr ...
- Dynamic CRM 2013学习笔记(三十一)自定义用excel批量导入实体数据
有一个实体的子表数据量太大,于是客户想用execel来导入实体数据.首先想到的是用系统自带的Import Data,客户嫌太麻烦,比如lookup字段要做map等. 下面是具体的实现步骤: 一.定义e ...
随机推荐
- Linux操作系统奥秘02-系统引导(GRUB)
GRUB的加载流程 GRUB是GNU的一款多重引导软件.GRUB包含了3个重要的文件:stage1 ,e2fsstage1_5,stage2.这三个文件分别代表了GRUB运行的3个阶段. 1.stag ...
- MySQL大数据分页的优化思路和索引延迟关联
之前上次在部门的分享会上,听了关于MySQL大数据的分页,即怎样使用limit offset,N来进行大数据的分页,现在做一个记录: 首先我们知道,limit offset,N的时候,MySQL的查询 ...
- 使用fastcgi_finish_request提高页面响应速度
当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法. 按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进 ...
- 测试Python代码
作为程序员,懂得测试,这是必须的职业技能.很遗憾,我以前从未意识到这点,因此经历了很多叫苦不迭的开发生涯.当然了,期望每个人都成为测试高手也是不可能的,但是最基本的单元测试啥的是不惜的,尤其是现在中小 ...
- 记录今天学习python中for与while循环针对break和continue的用法
python中有两个主要的循环for与while,其中针对这两个循环有两种不同的中断用法break与continue. 首先先看下面的循环代码: 1: for i in range(10):#变量i带 ...
- asp.net下拉列表绑定数据库多个字段
select ID, CONVERT(varchar(10),TBName) +','+RoomName+ ',最大人数:'+CONVERT(varchar(10),MAXNum) as ClassR ...
- angularJS学习之旅(1)
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- crontab这个坑,执行单个命令执行成功,但是写到crontab怎么也不行
昨天开始,一直在弄通过定时任务控制熄屏,在终端下的单个命令可以执行成功,写到脚本里,单个执行脚本能成功,但是写到crontab定时任务,怎么也不熄屏,但他确实执行了,看日志,是一直报错的:百度了很多很 ...
- 友盟分享SDK集成步骤
1.官方注册appID. 2.menifest添加和声明umeng相关的activity以及appKey. 3. // 首先声明一个controller变量,由友盟服务工厂类直接取得友盟社交服务. m ...
- 問題排查:建立選單時的錯誤 errcode:65318,errmsg:must use utf-8 charset hint: [Vwda70520vr18]
目前已知:程式存檔時,將檔案編碼格式設定成 UTF-8 即可. 筆者使用的文字編輯器為 Editplus 3.51,檔案編碼格式很多帶 UTF8.Unicode 字眼的選項,選 UTF-8 即可.