在CRM 4中,我曾经在CRMService.asmx的visual studio项目中添加Web引用,它将为我带来所有实体(包括自定义实体)和所有服务。
现在我已经转移到CRM 2011,我完全不明白它是如何在这里工作的......当我添加organization.svc的web引用时,它不会添加我的自定义实体,当我使用crmSvcUtil.exe时然后它为所有实体(包括自定义实体)生成类,但没有服务。那么我如何在CRM 2011中使用organization.svc?我只需要使用crmSvcUtil或将其与organization.svc的Web引用结合使用吗?
答案 0 :(得分:4)
在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);
进一步阅读的一些链接: