CRM 2011 с использованием Organization.svc в качестве веб-ссылки

В CRM 4 я добавлял веб-ссылку в свой проект визуальной студии CRMService.asmx, и это приводило меня ко всем объектам (включая пользовательские объекты) и всем службам.

Теперь я перешел на CRM 2011, и я действительно не совсем понимаю, как это работает здесь. классы для всех сущностей (включая настраиваемые сущности), но не для служб. Итак, как мне работать с Organization.svc в CRM 2011? Мне просто нужно использовать crmSvcUtil или объединить его с веб-ссылкой наorganization.svc?


person Greg Oks    schedule 23.07.2012    source источник


Ответы (1)


В CRM 2011 вы не добавляете ссылку на веб-сервис, как в CRM 4. Если вам нужны классы сущностей с ранней привязкой, вам придется сгенерировать их с помощью crmsvcutil.exe. Если вы собираетесь использовать LINQ для запроса данных CRM, добавьте /serviceContextName:contextname, и в файле кода будет сгенерирован OrganizationServiceContext.

Если вам не нужны классы сущностей с ранней привязкой, вы можете использовать класс сущностей. В 2011 году вы используете класс сущности вместо того, что называлось DynamicEntity в CRM 4.

Чтобы что-то сделать с CRM 2011, вам нужно будет добавить несколько ссылок в свой проект, вы найдете их в папке bin, где у вас есть SDK.

Вы всегда будете добавлять ссылку на 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());

Затем, используя уже созданный сервисный прокси, я могу начать работать с данными CRM. Для создания учетной записи:

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

Некоторая ссылка для дальнейшего чтения:

служба обнаружения

Использование IOrganizationService

Использование контекста службы организации

person Bassetassen    schedule 24.07.2012
comment
Спасибо за отличный ответ! :) - person Greg Oks; 24.07.2012