一、准备工作:

1.添加 microsoft.crm.sdk.proxy.dll和microsoft.xrm.sdk.dll 引用到项目中!并引用以下using!

  1. using Microsoft.Xrm.Sdk.Client;
  2. using Microsoft.Xrm.Sdk;
  3. using Microsoft.Xrm.Sdk.Query;
  4. using System.ServiceModel.Description;
  5. using Microsoft.Crm.Sdk.Messages;

二、增删改查
1.CRM连接方法;

  1. Uri uri = new Uri("http://192.168.112.107/mzj-crm2011/XRMServices/2011/Organization.svc");//CRM发表地址
  2. ClientCredentials clientCredentials = new ClientCredentials();
  3. clientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("test", "7654321", "hz.sh.cn");//账号,密码,域名
  4. OrganizationServiceProxy _service = new OrganizationServiceProxy(uri, null, clientCredentials, null);
  5. _service.EnableProxyTypes();

2.增(向CRM插入数据),默认你将要插入的数据读取到DataTable;

  1. Entity total = new Entity("new_yzsjz_street_total");//CRM的实体名称必须小写
  2. total["new_street_name"] = new_streetname;
  3. total["new_yzsjz_person"] = dt.Rows[i]["jzrs"].ToString();
  4. total["new_countstatus"] = dt.Rows[i]["cishu"].ToString();
  5. total["new_year"] = dt.Rows[i]["yy"].ToString();
  6. total["new_check_type"] = new OptionSetValue();//多选项
  7. total["new_suspicious_person"] = dt.Rows[i]["kyrs"].ToString();
  8. total["new_sumallamt"] = dt.Rows[i]["jine"].ToString();
  9. total["new_month"] = dt.Rows[i]["mm"].ToString();
  10.  
  11. string sql1 = string.Format("select TeamId from Team where Name='{0}'", new_streetname);
  12. SqlCommand cmd1 = new SqlCommand(sql1, con);
  13. con.Open();
  14. SqlDataAdapter sa1 = new SqlDataAdapter(cmd1);
  15. DataTable dt1 = new DataTable();
  16. DataSet ds1 = new DataSet();
  17. sa1.Fill(ds1);
  18. dt1 = ds1.Tables[];
  19. con.Close();
  20. string guid = dt1.Rows[]["teamid"].ToString();//获取负责人的Guid
  21.  
  22. //创建记录并为该记录添上负责人
  23. Guid hh = _service.Create(total);
  24. Guid aa = new Guid(guid);
  25. AssignRequest assignRequest = new AssignRequest();
  26. assignRequest.Assignee = new EntityReference("team", aa);//此处为团队,若负责人为用户则为systemuser
  27. assignRequest.Target = new EntityReference("new_yzsjz_street_total", hh);//实体名称
  28. _service.Execute(assignRequest);

3.删(删除CRM中的记录);

  1. string new_id = dtjh.Rows[i]["new_id"].ToString();
  2. //通过条件查询出记录的GUID
  3. QueryExpression prosal = new QueryExpression("new_marry_person_reg");//实体名称
  4. prosal.ColumnSet.AddColumn("new_id");//条件
  5. FilterExpression filt = prosal.Criteria.AddFilter(LogicalOperator.And);//条件逻辑 and 或者 or
  6. filt.AddCondition("new_id", ConditionOperator.Equal, new_id);//逻辑
  7. EntityCollection entcol = _service.RetrieveMultiple(prosal);
  8. if (new_id!="")
  9. {
  10. if (entcol.Entities.Count>)
  11. {
  12. for (int j = ; j < entcol.Entities.Count; j++)
  13. {
  14. Entity entiy = new Entity("new_marry_person_reg");
  15. entiy.Id = entcol.Entities[j].Id;//记录GUID
  16. DeleteRequest deleteRequest = new DeleteRequest();
  17. deleteRequest.Target = new EntityReference("new_marry_person_reg", entiy.Id);
  18. DeleteResponse deleteResponse = (DeleteResponse)_service.Execute(deleteRequest);//删除方法
  19. }
  20. }
  21. }

Tips:删除也可直接从数据库中读取到记录的GUID,即字段名称为“实体名+ID”。再放入以上的DeleteRequest方法中!

4.改(修改CRM中的记录的数据);

  1. UpdateRequest uq = new UpdateRequest();
  2. Entity contact2 = new Entity("new_yzsjz_daily_settlement");
  3. contact2.Id = guidmtd;//通过查询获取得记录的Guid
  4. if (guidym != "")
  5. {
  6. //CRM中lookup类型字段的赋值方法
  7. Guid new_tomontha = new Guid(guidym);
  8. EntityReference newguid = new EntityReference("new_jz_person", new_tomontha);
  9. contact2["new_tomonth"] = newguid;
  10. }
  11. uq.Target = contact2;
  12. UpdateResponse updateResponse = (UpdateResponse)_service.Execute(uq);

5.查(查询CRM中的记录);

  1. //等同于sql语句
  2. QueryExpression prosal = new QueryExpression("new_yzsjz_all_settlement");//当月
  3. prosal.ColumnSet.AddColumn("new_insureid");
  4. prosal.ColumnSet.AddColumn("new_year");
  5. prosal.ColumnSet.AddColumn("new_month");
  6. FilterExpression filt = prosal.Criteria.AddFilter(LogicalOperator.And);
  7. filt.AddCondition("new_insureid", ConditionOperator.Equal, new_insureid);//身份证
  8. filt.AddCondition("new_year", ConditionOperator.Equal, year);//年
  9. filt.AddCondition("new_month", ConditionOperator.Equal, month);//月
  10. EntityCollection entcol = _service.RetrieveMultiple(prosal);
  11. if (new_insureid != "" && year != "" && month != "")
  12. {
  13. if (entcol.Entities.Count > )
  14. {
  15. Guid guid1 = entcol.Entities[].Id;//记录GUID
  16. Entity entiy2 = _service.Retrieve
  17. ("new_yzsjz_all_settlement", guid1, new ColumnSet(true));
  18. string aa=entiy2.Attributes["aa"].ToString()//该记录中的aa数据
  19.  
  20. }
  21. }

Tips:建议若需查询的记录太多,还是用SQL查询方法较好,CRM自带的方法只会查出5000+条记录。

CRM基于.NET的增删改查的更多相关文章

  1. Mybatis_3.基于注解的增删改查

    1.实体类User.java public class User { private int id; private String name; private int age; //getter.se ...

  2. ASP.NET Web API基于OData的增删改查,以及处理实体间关系

    本篇体验实现ASP.NET Web API基于OData的增删改查,以及处理实体间的关系. 首先是比较典型的一对多关系,Supplier和Product. public class Product { ...

  3. [转]ASP.NET Web API基于OData的增删改查,以及处理实体间关系

    本文转自:http://www.cnblogs.com/darrenji/p/4926334.html 本篇体验实现ASP.NET Web API基于OData的增删改查,以及处理实体间的关系. 首先 ...

  4. Node.js、express、mongodb 入门(基于easyui datagrid增删改查)

    前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验 ...

  5. Mybatis_2.基于XML的增删改查

    1.实体类User.java public class User { private int id; private String name; private int age; //getter.se ...

  6. 基于django做增删改查组件,分页器组件

    增删改查组件 一.Djangoadmin的启发 二.基于Djangoadmin实现数据的增删改查 分页器组件 分页器组件的介绍以及源码解读 补充:源码下载,

  7. RESTful最佳实践之基于 jersey 的增删改查

    jersey-rest-demo 增删改查 项目地址:https://github.com/CoderDream/jersey-rest-demo 源代码:http://download.csdn.n ...

  8. Mybatis之基于XML的增删改查

    这里先吐槽下,写的半天的东西,IE浏览器弹出调试窗口导致写的东西全部没保存,搞得我还要重新用谷歌写,思路全没了,fuck. 前面学习了下spring的DAO层,说起DAO层,那ORM肯定是少不了的,O ...

  9. Django基于类的增删改查,简单逻辑都不用写

    Django是Python中一个非常牛逼的web框架,他帮我们做了很多事,里边也提前封装了很多牛逼的功能,用起来简直不要太爽,在写网站的过程中,增删改查这几个基本的功能我们是经常会用到,Django把 ...

随机推荐

  1. C#设计模式系列:迭代器模式(Iterator)

    迭代器模式把对象的职责分离,职责分离可以最大限度减少彼此之间的耦合程度,从而建立一个松耦合的对象.职责分离的要点是对被分离的职责进行封装,并以抽象的方式建立彼此之间的关系. 1.迭代器模式简介 1.1 ...

  2. ASP.NET MVC5 网站开发实践 - 概述

    前段时间一直在用MVC4写个网站开发的demo,由于刚开始学所有的代码都写在一个项目中,越写越混乱,到后来有些代码自己都理不清了.1月26日晚上在群里跟@怒放 他们讨论这个问题,结论是即使只是一个小d ...

  3. JAVA基础代码分享--求圆面积

    问题描述 用户输入圆的半径,计算并显示圆的面积 代码分享 /** * @author hpu-gs * 2015/11/25 */ public class Circle { public stati ...

  4. 【原创】Aspose.Words组件介绍及使用—基本介绍与DOM概述

           本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 本博客其他.NET开源项目文章目录:http://www.cnbl ...

  5. 【开源】OSharp3.3框架解说系列:重新开源及3.3版本新特性

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  6. 6-tips-for-managing-property-files-with-spring--转

    原文地址:http://www.summa.com/blog/2009/04/20/6-tips-for-managing-property-files-with-spring What could ...

  7. 自己在总结前人经验下弄的几个opencv封装函数

    第一个是增加对比度的函数,就是变亮. IplImage* EqualizeHistColorImage(IplImage *pImage) { IplImage *pEquaImage = cvCre ...

  8. 软件开发常用设计模式—单例模式总结(c++版)

    单例模式:就是只有一个实例. singleton pattern单例模式:确保某一个类在程序运行中只能生成一个实例,并提供一个访问它的全局访问点.这个类称为单例类.如一个工程中,数据库访问对象只有一个 ...

  9. 使用OAuth打造webapi认证服务供自己的客户端使用

    一.什么是OAuth OAuth是一个关于授权(Authorization)的开放网络标准,目前的版本是2.0版.注意是Authorization(授权),而不是Authentication(认证). ...

  10. C# 中的as和is小结

    在读.Net 框架设计的时候,关于C#中类型转化中的部分内容,在此总结记录,分享予大家. 首先,我们声明一个简单的继承关系. Class Father { Int x; } Class Child:F ...