Я использую метод раннего связывания, когда вы генерируете классы сущностей C # с помощью инструмента CrmSvcUtil.exe
, но убедитесь, что вы используете переключатель /codecustomization
, который вы найдете в различных примерах. Вам понадобится последняя версия CRM 2011 SDK, и вы должны запустить CrmSvcUtil.exe
из этой папки \bin
(не используйте версию, устанавливаемую с CRM).
Ваш проект должен будет ссылаться на Microsoft.Xrm.Client
, Microsoft.Xrm.Sdk
и Microsoft.Crm.Sdk.Proxy
, а также на несколько других элементов из .Net Framework (посмотрите на ошибки сборки, чтобы увидеть, что вам не хватает, затем добавьте их до сборки) .
Вот базовый фрагмент кода, который извлекает объект Contact, обновляет одно из его полей и сохраняет его обратно в CRM:
CrmDataContext dc = new CrmDataContext("Xrm");
Contact contact = (from c in dc.ContactSet
where ...whatever...
select c).FirstOrDefault();
contact.FirstName = "Jo";
dc.SaveChanges();
(Обратите внимание, что CrmDataContext
- это имя моего контекста данных. Вы можете установить это имя, используя один из ключей командной строки CrmSvcUtil
).
Вам также нужно добавить несколько вещей в ваш web.config:
<configSections>
<section name="microsoft.xrm.client" type="Microsoft.Xrm.Client.Configuration.CrmSection, Microsoft.Xrm.Client" />
</configSections>
<connectionStrings>
<add name="Xrm" connectionString="Server=http://<your crm url>; Domain=<your domain>; Username=<a crm user id>; Password=<their password>" />
</connectionStrings>
<microsoft.xrm.client>
<contexts>
<add name="Xrm" type="" />
</contexts>
</microsoft.xrm.client>
Предполагается, что вы используете CRM в своей корпоративной сети, поэтому учетная запись и домен, указанные в строке подключения, будут учетной записью AD, которая настроена как пользователь CRM с соответствующими разрешениями для получения и обновления объектов.