Обновите запись CRM 2011, используя пример LINQ - PullRequest
0 голосов
/ 22 июня 2011

Может кто-нибудь опубликовать подтвержденный пример использования linq для извлечения и обновления записи в CRM Dynamics 2011.

Microsoft утверждает, что это "не поддерживается", но у меня есть подозрение, что это возможно.

Ответы [ 2 ]

3 голосов
/ 04 июля 2011

Я использую метод раннего связывания, когда вы генерируете классы сущностей 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 с соответствующими разрешениями для получения и обновления объектов.

0 голосов
/ 08 сентября 2011

Это грубый пример использования поставщика ODATA, подключенного к онлайн-провайдеру

             var serverConfig = GetServerConfig(sessionKey);
            // Connect to the Organization service. 
            // The using statement ensures that the service proxy will be properly disposed.

            using (var serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri, serverConfig.Credentials, serverConfig.DeviceCredentials))
            {
                // This statement is required to enable early-bound type support.
                serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());

                using (var orgContext = new CrmServiceContext(serviceProxy))
                {
                    return orgContext.AccountSet.Where(item => item.Id == id).Select().Single();
                }
            }

, также есть хороший пример в SDK:

CRM2011Sdk \ sdk \ samplecode \ cs \wsdlbasedproxies \ онлайн

...