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

时间: 2024-10-30 12:28:31

crm快速开发之OrganizationService的相关文章

crm快速开发之QueryExpression

/* 创建者:菜刀居士的博客 * 创建日期:2014年07月06号 */ namespace Net.CRM.OrganizationService { using System; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Query; using System.Collections.Generic; /// <summary> /// QueryExpression /// </summary> public class

crm快速开发之EntityCollection

/* 创建者:菜刀居士的博客 * 创建日期:2014年07月07号 */ namespace Net.CRM.OrganizationService { using System; using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Query; /// <summary> /// EntityCollection /// </summary> public class EntityCollectionDemo { /// <su

crm快速开发之Entity

我们在后台代码里面操作Entity的时候,基本上是这样写的: /* 创建者:菜刀居士的博客 * 创建日期:2014年07月5号 */ namespace Net.CRM.Entity { using System; using Microsoft.Xrm.Sdk; /// <summary> /// 基本模式---Entity /// </summary> public class EntityDemo { public void Run(Entity entity) { if (

Android快速开发之appBase——(6).HttpReq和APICloudSDK

Android快速开发之appBase--(6).HttpReq和APICloudSDK HttpReq和APICloudSDK都是网络请求组件,都是基于xUtils的HttpUtils重新封装的.接下来讲一下使用方法. 1.HttpReq 看以看到有这么几个方法 GET:GET方式请求 POST:普通的POST表单提交 POST:将数据以流的形式传递 /** * POST请求,用InputStream的方式传递请求参数 * * @param api * 接口地址 * @param reques

Android快速开发之appBase——(1).appBase介绍

Android快速开发之appBase--(1).appBase介绍 一直想写博客,苦于自己的文笔实在不行,在CSDN潜水了好几年,中间差不多3年没有写过博客.原因有二:1.文笔差:2.没时间. 今年开始,时间充裕了,开始计划练练自己的文笔,也让自己成长起来,希望从中能够提升自己的能力.望大家多多支持和关注!! 导读:appBase是什么? appBase是一个Android app开发的基础集合,目的是任何应用都可以在这个基础之上开发app,省去了搭建框架的时间. appBase=xutils

Android快速开发之appBase——(2).万能的Adapter

Android快速开发之appBase--(2).万能的Adapter android的Adapter是常用的一个组件,自定义的adapter基本上都是集成BaseAdapter,然后实现getView等一系列方法.时间长了,难免让人感觉到写的重复性代码过多,那么万能的Adapter讲解放你的双手. 对比 BaseAdapter package com.snicesoft.appbase.demo; import java.util.ArrayList; import java.util.Lis

Android快速开发之appBase——实战《购物车》

Android快速开发之appBase--实战<购物车> 最近将appBase实战于各种项目中,也发现了不少问题,并优化了很多功能.今天带给大家一个实战–<购物车>.购物车,在商城app中是必不可少的一部分,也是使用的比较多的,这里简单的做一个效果. 先来看看效果图 1.创建项目 第一种.引用appBase项目即可 第二种.将appBase的jar文件copy到libs下 我用的第二种,如上图所示. 2.代码生成 通过代码生成器生成Activity.Presenter.Adapte

Android Studio快速开发之道

概述 现如今开发越来越追求效率和节奏,节省出时间做更多的事情,除了开发技术上的封装等,开发工具的使用技巧也是很重要的,今天就根据自己的经验来给大家介绍一下Android Studio快速开发之道. Postfix completion 介绍 Postfix completion 是IntelliJ IDEA很早就有的功能,该功能基于已经输入的表达式和你添加的后缀来实现另一个你想要的表达式.例如在布尔表达式之后加上后缀if就是if语句 . 常用后缀介绍 下面介绍一下个人工作中觉得比较常用的几个后缀

Android快速开发之appBase——(3).详解IHolder和IData

Android快速开发之appBase--(3).详解IHolder和IData IHolder和IData是AVLib的两个组件,在前面已经使用过了,那么这一篇将会详细说明这两个组件的用法. IHolder IHolder是AVLib中View自动绑定的组件规范,所有@Id使用只能存在IHolder派生的类中. 源码 package com.snicesoft.avlib.rule; /** * @author zhe * @since 2015年4月15日 上午9:54:17 * @vers