crm高速开发之OrganizationService
这是主要的开发模式:
/* 创建者:菜刀居士的博客
* 创建日期:2014年07月06号
*/
namespace Net.CRM.OrganizationService
{
using System;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
/// <summary>
/// 基本模式---OrganizationService
/// </summary>
public class OrganizationServiceDemo
{
/// <summary>
/// 查询
/// </summary>
public Entity Retrieve(IOrganizationService service, Entity en)
{
return service.Retrieve(en.LogicalName, en.Id, new ColumnSet("new_int", "new_string"));
}
/// <summary>
/// 删除
/// </summary>
public void Delete(IOrganizationService service, Entity en)
{
service.Delete(en.LogicalName, en.Id);
}
/// <summary>
/// 批量删除
/// </summary>
public void Delete(IOrganizationService service,EntityCollection ec)
{
if (ec != null && ec.Entities.Count > 0)
{
foreach(Entity en in ec.Entities)
{
service.Delete(en.LogicalName, en.Id);
}
}
}
/// <summary>
/// 更新int类型的字段
/// </summary>
public void UpdateInt(IOrganizationService service, Entity en)
{
Entity updateEn = new Entity() { LogicalName = en.LogicalName,Id = en.Id };
updateEn["new_int"] = 10;
service.Update(updateEn);
}
/// <summary>
/// 更新string类型的字段
/// </summary>
public void UpdateInt(IOrganizationService service, Entity en)
{
Entity updateEn = new Entity() { LogicalName = en.LogicalName, Id = en.Id };
updateEn["new_string"] = "abc";
service.Update(updateEn);
}
/// <summary>
/// 更新float类型的字段
/// </summary>
public void UpdateFloat(IOrganizationService service, Entity en)
{
Entity updateEn = new Entity() { LogicalName = en.LogicalName, Id = en.Id };
updateEn["new_float"] = 12.9;
service.Update(updateEn);
}
/// <summary>
/// 更新Money类型的字段
/// </summary>
public void UpdateMoney(IOrganizationService service, Entity en)
{
Entity updateEn = new Entity() { LogicalName = en.LogicalName, Id = en.Id };
updateEn["new_money"] = new Money(12);
service.Update(updateEn);
}
/// <summary>
/// 更新OptionSetValue类型的字段
/// </summary>
public void UpdateOptionSetValue(IOrganizationService service, Entity en)
{
Entity updateEn = new Entity() { LogicalName = en.LogicalName, Id = en.Id };
updateEn["new_optionsetvalue"] = new OptionSetValue(10);
service.Update(updateEn);
}
/// <summary>
/// 更新EntityReference类型的字段
/// </summary>
public void UpdateEntityReference(IOrganizationService service, Entity en)
{
Entity updateEn = new Entity() { LogicalName = en.LogicalName, Id = en.Id };
updateEn["new_account"] = new EntityReference() { LogicalName = "account",Id = Guid.NewGuid() };
service.Update(updateEn);
}
}
}
这是改进后的模式:
/* 创建者:菜刀居士的博客
* 创建日期:2014年07月06号
*/
namespace Net.CRM.OrganizationService
{
using System;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
/// <summary>
/// 高速开发---OrganizationService
/// </summary>
public class OrganizationServiceQuickDemo
{
/// <summary>
/// 查询
/// </summary>
public Entity Retrieve(IOrganizationService service, Entity en)
{
return service.Retrieve(en,"new_int", "new_string");
}
/// <summary>
/// 删除
/// </summary>
public void Delete(IOrganizationService service, Entity en)
{;
service.Delete(en);
}
/// <summary>
/// 批量删除
/// </summary>
public void Delete(IOrganizationService service, EntityCollection ec)
{
service.Delete(ec);
}
/// <summary>
/// 更新int类型的字段
/// </summary>
public void UpdateInt(IOrganizationService service, Entity en)
{
service.Update(en, "new_int", 10);
}
/// <summary>
/// 更新string类型的字段
/// </summary>
public void UpdateInt(IOrganizationService service, Entity en)
{
service.Update(en, "new_string", "abc");
}
/// <summary>
/// 更新float类型的字段
/// </summary>
public void UpdateFloat(IOrganizationService service, Entity en)
{
service.Update(en, "new_float", 12.9);
}
/// <summary>
/// 更新Money类型的字段
/// </summary>
public void UpdateMoney(IOrganizationService service, Entity en)
{
service.Update(en, "new_money", new Money(12));
}
/// <summary>
/// 更新OptionSetValue类型的字段
/// </summary>
public void UpdateOptionSetValue(IOrganizationService service, Entity en)
{
service.Update(en, "new_optionsetvalue", new OptionSetValue(10));
}
/// <summary>
/// 更新EntityReference类型的字段
/// </summary>
public void UpdateEntityReference(IOrganizationService service, Entity en)
{
service.Update(en, "new_account", new EntityReference() { LogicalName = "account", Id = Guid.NewGuid() });
}
}
/// <summary>
/// 扩展方法
/// </summary>
public static class EntityFunction
{
public static Entity Retrieve(this IOrganizationService service, Entity en,params string[] attrs)
{
return service.Retrieve(en.LogicalName, en.Id, new ColumnSet(attrs));
}
public static void Delete(this IOrganizationService service, Entity en)
{
service.Delete(en.LogicalName, en.Id);
}
public static void Delete(this IOrganizationService service, EntityCollection ec)
{
if (ec != null && ec.Entities.Count > 0)
{
foreach (Entity en in ec.Entities)
{
service.Delete(en.LogicalName, en.Id);
}
}
}
public static void Update<T>(this IOrganizationService service, Entity en, string name, T value)
{
Entity updateEn = new Entity() { LogicalName = en.LogicalName,Id = en.Id };
updateEn[name] = value;
service.Update(updateEn);
}
}
}
是不是开发快非常多。
一般的,假设你的项目不是非常大,时间足够充分。这个时候就没有必要用高速开发了
当你的项目非常大或者功能非常多,时间非常紧,这个时候高速开发就非常有必要了。
crm高速开发之OrganizationService的更多相关文章
- crm高速开发之QueryExpression
/* 创建者:菜刀居士的博客 * 创建日期:2014年07月06号 */ namespace Net.CRM.OrganizationService { using System; ...
- crm高速开发之EntityCollection
/* 创建者:菜刀居士的博客 * 创建日期:2014年07月07号 */ namespace Net.CRM.OrganizationService { using System; ...
- crm高速开发之Entity
我们在后台代码里面操作Entity的时候,基本上是这样写的: /* 创建者:菜刀居士的博客 * 创建日期:2014年07月5号 */ namespace Net.CRM.Entity { ...
- JavaEE开发之SpringMVC中的自定义拦截器及异常处理
上篇博客我们聊了<JavaEE开发之SpringMVC中的路由配置及参数传递详解>,本篇博客我们就聊一下自定义拦截器的实现.以及使用ModelAndView对象将Controller的值加 ...
- [Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘终结篇:UniLua热更新全然解读
---------------------------------------------------------------------------------------------------- ...
- 微信公众号开发之VS远程调试
目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...
- Android混合开发之WebViewJavascriptBridge实现JS与java安全交互
前言: 为了加快开发效率,目前公司一些功能使用H5开发,这里难免会用到Js与Java函数互相调用的问题,这个Android是提供了原生支持的,不过存在安全隐患,今天我们来学习一种安全方式来满足Js与j ...
- Android混合开发之WebView与Javascript交互
前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App.Web App.Hybrid App三种方式,个人觉得目前以Hybri ...
- UWP开发之Template10实践二:拍照功能你合理使用了吗?(TempState临时目录问题)
最近在忙Asp.Net MVC开发一直没空更新UWP这块,不过有时间的话还是需要将自己的经验和大家分享下,以求共同进步. 在上章[UWP开发之Template10实践:本地文件与照相机文件操作的MVV ...
随机推荐
- Vue 区别
computed和methods区别 效果是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值. 而methods,在重新渲染的时候,函数总会重新调用执行.
- nodejs脚手架express-generator
1.安装生成器 npm install express-generator -g 2. 创建名称为APP的应用: express my-project 3.安装依赖包 cd my-project np ...
- (转)vuex2.0 基本使用(2) --- mutation 和 action
我们的项目非常简单,当点击+1按钮的时候,count 加1,点击-1按钮的时候,count 减1. 1, mutation The only way to actually change state ...
- YOLO (You Only Look Once)
YOLO (You Only Look Once) dl cnn object detection 一.YOLO YOLO是一个实时的目标检测系统.最新的V2版本在Titan X 上可以每秒处理 ...
- [PHP][学习笔记][CURL]监测设备运行情况小demo
1.curl获取的web content 不能直接echo到页面,会造成js各种错误 2.想办法处理字符串的截取.拼接 2.1.裁剪html返回的字符串 function cutStringFrom( ...
- 安装Windows服务,一直提示系统正在关机的错误。
错误截图如下: 问题概况: 在本机安装没问题,程序没问题. 安装到公司的测试环境就报错了!以管理员身份运行也不行. 解决方案: 1.最后发现是360安全防护中心拦截了.具体解决过程如下: 2.进入36 ...
- 【PostgreSQL-9.6.3】psql常用命令
命令 描述 \l 查看数据库 \c 换库 \d 查看所有表 \dt 只显示匹配的表 \di 只显示匹配的索引 \ds 只显示匹配的序列 \dv 只显示匹配的视图 \df 只显示匹配的函数 \d t1 ...
- PHP执行Mysql数据库的备份和还原
使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先查出需要备份的表的 ...
- GrepWin:Win7下的文本替换工具
工作环境退回到Win7之后,内容查找功能非常不给力,推荐一个文本内容查找工具grepWin. Win7下的文本查找/替换工具: grepWin
- CVPR2015深度学习回顾
原文链接:http://www.csdn.net/article/2015-08-06/2825395 本文做了少量修改,仅作转载存贮,如有疑问或版权问题,请访问原作者或告知本人. CVPR可谓计算机 ...