0

在 CRM 4 中,我曾经在我的 CRMService.asmx 的 Visual Studio 项目中添加 Web 引用,它会为我带来所有实体(包括自定义实体)和所有服务。

现在我已经转移到 CRM 2011 并且我不太了解它在这里的工作原理..当我添加 organization.svc 的 Web 引用时,它不会添加我的自定义实体,当我使用 crmSvcUtil.exe 时它会生成所有实体(包括自定义实体)的类,但没有服务。那么我如何在 CRM 2011 中使用 organization.svc?我只需要使用 crmSvcUtil 还是将其与 organization.svc 的 Web 参考结合使用?

4

1 回答 1

5

在 CRM 2011 中,您不会像在 CRM 4 中那样添加对 Web 服务的引用。如果您想要早期绑定的实体类,那么您必须使用 crmsvcutil.exe 生成它。如果您打算使用 LINQ 查询您的 CRM 数据,则添加 /serviceContextName:contextname 并且将在代码文件中生成一个 OrganizationServiceContext。

如果您不关心早期绑定的实体类,那么您可以使用实体类。在 2011 年,您使用 CRM 4 中称为 DynamicEntity 的实体类。

为了对 CRM 2011 进行任何操作,您必须向项目添加一些引用,您可以在包含 sdk 的 bin 文件夹中找到它们。

您将始终添加对 Microsoft.Xrm.Sdk 的引用。如果您将使用早期绑定,您还需要对 Microsoft.Crm.Sdk.Proxy 的引用。从标准的 .Net 库中,您必须添加对 System.ServiceModel 和 System.Runtime.Serialization 的引用

要连接到 CRM 2011,您将使用 OrganizationServiceProxy。

var organizationUri = new Uri("http://<servername>/<organizationname>/XRMServices/2011/Organization.svc");
var credentials = new ClientCredentials();

var serviceProxy = new OrganizationServiceProxy(organizationUri, null, credentials, null);
// If you use early bound entity classes, you have to include the line below. Not needed on late bound
serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());

然后通过使用已经创建的 serviceproxy,我可以开始使用 CRM 数据。创建帐户:

var account = new Account();
account.Name = "Testing";
serviceProxy.Create(account);

一些进一步阅读的链接:

发现服务

使用 IOrganizationService

使用组织服务上下文

于 2012-07-24T08:37:19.323 回答