这是主要的开发模式:

/* 创建者:菜刀居士的博客

 * 创建日期: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的更多相关文章

  1. crm高速开发之QueryExpression

    /* 创建者:菜刀居士的博客  * 创建日期:2014年07月06号  */ namespace Net.CRM.OrganizationService {     using System;     ...

  2. crm高速开发之EntityCollection

    /* 创建者:菜刀居士的博客  * 创建日期:2014年07月07号  */ namespace Net.CRM.OrganizationService {     using System;     ...

  3. crm高速开发之Entity

    我们在后台代码里面操作Entity的时候,基本上是这样写的: /* 创建者:菜刀居士的博客  * 创建日期:2014年07月5号  */ namespace Net.CRM.Entity {     ...

  4. JavaEE开发之SpringMVC中的自定义拦截器及异常处理

    上篇博客我们聊了<JavaEE开发之SpringMVC中的路由配置及参数传递详解>,本篇博客我们就聊一下自定义拦截器的实现.以及使用ModelAndView对象将Controller的值加 ...

  5. [Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘终结篇:UniLua热更新全然解读

    ---------------------------------------------------------------------------------------------------- ...

  6. 微信公众号开发之VS远程调试

    目录 (一)微信公众号开发之VS远程调试 (二)微信公众号开发之基础梳理 (三)微信公众号开发之自动消息回复和自定义菜单 前言 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流 ...

  7. Android混合开发之WebViewJavascriptBridge实现JS与java安全交互

    前言: 为了加快开发效率,目前公司一些功能使用H5开发,这里难免会用到Js与Java函数互相调用的问题,这个Android是提供了原生支持的,不过存在安全隐患,今天我们来学习一种安全方式来满足Js与j ...

  8. Android混合开发之WebView与Javascript交互

    前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App.Web App.Hybrid App三种方式,个人觉得目前以Hybri ...

  9. UWP开发之Template10实践二:拍照功能你合理使用了吗?(TempState临时目录问题)

    最近在忙Asp.Net MVC开发一直没空更新UWP这块,不过有时间的话还是需要将自己的经验和大家分享下,以求共同进步. 在上章[UWP开发之Template10实践:本地文件与照相机文件操作的MVV ...

随机推荐

  1. Hibernate多表映射(三)

    一对多|多对一 一个分类对应多个商品,一个商品只属于一个分类 创建分类表 products用set装,set特点值不能够重复 package com.hibernate.domain; import ...

  2. css3中的box-sizing属性的使用

    box-sizing属性用来定义元素的width和height所表示的区域,该属性一般有三种值:content-box.border-box.inherit. 其中inherit表示box-sizin ...

  3. 我的web前端自学之路-心得篇:我为什么要学习web前端?

    时光如流水,转眼间,自己已经是大三的学长了,看着一个个学弟学妹,心中有种莫名的感觉,很怀念大学的前两年时光,但也很憧憬着自己的未来,自己将要去经历很多从未经历的事.我是我们学校信科院的一名学生,在编程 ...

  4. mysql 5.6 中 explicit_defaults_for_timestamp参数

    mysql 5.6 中 explicit_defaults_for_timestamp参数 一: 官方文档中关于explicit_defaults_for_timestamp参数说明如下: expli ...

  5. 备份xx

    https://www.tuicool.com/articles/V3EBzev https://www.tuicool.com/topics/11080087?st=0&lang=1& ...

  6. C# MVC 延时

    [System.Runtime.InteropServices.DllImport("kernel32.dll")] static extern uint GetTickCount ...

  7. 【转】虚拟化(一):虚拟化及vmware产品介绍

    由于公司最近在做虚拟化监控,因此就需要把虚拟化方面的知识给学习总结一下,对于虚拟化的概念,摘自百度百科,如下:         虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机 ...

  8. SP1825 FTOUR2 - Free tour II 点分治+启发式合并+未调完

    题意翻译 给定一棵n个点的树,树上有m个黑点,求出一条路径,使得这条路径经过的黑点数小于等于k,且路径长度最大 Code: #include <bits/stdc++.h> using n ...

  9. jquery获取当前时间并且格式化

    Date.prototype.Format = function (fmt) {      var o = {          "M+": this.getMonth() + 1 ...

  10. Vue push() pop() shift() unshift() splice() sort() reverse() ...

    Vue 变异方法 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. pop() 方法用于删除并返回数组的最后一个元素. shift() 方法用于把数组的第一个元素从其中删除,并返回 ...