CRM2011中,对其系统做了进一步的统一与集中,体现之一,就是其所提供的Web服务。

在CRM4时代,CRM提高的服务有三个,分别是:

名称

功能描述

DiscoveryService

提供搜索组织单位的途径

CrmService

提供访问所有实体的途径

MetadataService

提供访问元数据的途径

而在CRM2011中,将CrmService与MetadataService的角色进行整合,取而代之的是IOrganizationService,而DiscoveryService也演进为IDiscoveryService Web服务。这两个服务的功能如下:

IDiscoveryService:用于获取组织列表以及相应组织的IOrganizationService的URL地址;

IOrganizationService:访问数据以及元数据;

IDiscoveryService

获取组织信息,只提供了一个方法——Execute。

Execute方法

功用:获取组织信息

参数:DiscoveryRequest类型的请求信息,具体有

RetrieveOrganizationRequest:用于获取某个特定组织的数据

RetrieveOrganizationsRequest:用于获取当前用户所属的所有组织的数据

相应的,Execute方法的返回值也根据输入参数的不同,而返回不同类型的结果:

RetrieveOrganizationResponse:包含特定组织的信息

RetrieveOrganizationsResponse:包含当前用户所属的所有组织的信息

这两种不同的返回值,其基类都是DiscoveryResponse

如果要在项目中使用IDiscoveryService,有两个方法:

1. 添加服务引用,web服务的URL是http://<servername>:<port>/XRMServices/2011/Discovery.svc

或者

2. 添加对Microsoft.Xrm.Sdk.dll的引用

IOrganizationService

IOrganizationService,提供了8个方法,分别是

名称

描述

Create

创建实体实例(记录)

Update

更新实体实例(记录)

Delete

删除实体实例(记录)

Retrieve

获取单条实体实例(记录)

RetrieveMultiple

获取多条实体实例(记录)

Associate

在两个实体实例(记录)之间创建关联

Disassociate

在两个实体实例(记录)之间解除关联

Execute

执行以上七个方法所涵盖的普通操作

执行特殊操作,

样例代码:

//Create:

Account accCreate = new Account

{

Name = “Sampe Create Account”;

}

Guid accId = _service.Create(accCreate);

//Retrieve

ColumnSet cols = new ColumnSet(new String[]{ “name” });

Account accRetrieved = (Account)_service.Retrieve("account", _ accId, cols);

//Update:

Account accUpdate = new Account

{

AccountId = accId;

Name = “Sample Update Account”;

}

_service.Update(accUpdate);

//Delete

_service.Delete(“account”, accId);

Execute方法有一些特殊,该方法接受的参数为一个请求消息,即类名格式为XXXRequest的对象,返回值为对应请求消息的响应消息,该类消息的类名格式为XXXResponse。所有这些XXXRequest类都是OrganizationRequest的子类。所有这些XXXResponse的基类都是OrganizationResponse。这些消息分属于两个命名空间,分别是Microsoft.Xrm.Sdk.Messages以及Microsoft.Crm.Sdk.Messages。在Microsoft.Xrm.Sdk.Messages命名空间中的消息,分为操作元数据的消息以及操作实体数据的消息,例如

CreateEntityRequest:创建实体的请求消息;

CreateRequest:创建实体记录的请求消息;

而Microsoft.Crm.Sdk.Messages命名空间中的消息,是特定于对CRM系统的消息。例如

SendEmailRequest:发送电子邮件的请求消息;

WinOpportunityRequest:设置商机赢单状态的请求消息

AddMemberListRequest:添加营销列表成员的请求消息

作者: 石头居 发表于 2010-11-30 23:00 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"