Использовать данные CRM 2011 REST в ядре asp.net 3.0 - PullRequest
0 голосов
/ 26 октября 2019

Мне нужно использовать данные CRM 2011 в приложении Blazor (новое в .net Core 3.0). SOAP больше не поддерживается в .net Core. Итак, ищите примеры того, как использовать конечную точку REST.

Все сборки Microsoft SDK используют WCF для конечной точки SOAP, которая не поддерживается в ядре .net. Поэтому я вынужден использовать конечную точку REST. Мне требуются только базовые операции CRUD.

Я пытался использовать Unchase OData Connectedservice (https://github.com/unchase/Unchase.OData.Connectedservice/), который действительно генерировал некоторый код. Однако все примеры показывают только, как добавить службу, но не смоглинайти какие-либо документы о том, как его использовать? Он также не может скомпилировать с ошибкой:

<«Задача» не содержит определения для «Фабрика»>

Благодарим за любую помощь или предложения. Спасибовы

1 Ответ

0 голосов
/ 26 октября 2019

Мне удалось заставить его работать с помощью Unchase OData Connectedservice

Мне пришлось переименовать оскорбительную «Задачу» с помощью «System.Threading.Tasks.Task»

Борется с асинхронной, новсе получилось следующим образом:

public static async Task<IEnumerable<Account>> ExecuteCustomersQueryAsync()
    {
        OrgContext crm = new OrgContext(new Uri("http://<Server>/<Org>/XRMServices/2011/OrganizationData.svc/"));
        crm.Credentials = new NetworkCredential("Username", "Password", "Domain");
        DataServiceQuery<Account> query = crm.AccountSet
            .AddQueryOption("$filter", "new_Class/Value eq 100000000");

        try
        {
            (ODataStandartResponse, IEnumerable<Account>) rez =  await query.ExecuteAsync();
            return rez.Item2;
        }
        catch (DataServiceQueryException ex)
        {
            throw new ApplicationException(
                "An error occurred during query execution.", ex);
        }
    }

А затем позвонить:

 IEnumerable<Account> container = await ExecuteCustomersQueryAsync();
        try
        {
            foreach (Account cust in container)
            {
                Console.WriteLine("Customer Name: {0}, Acc No.: {1}", cust.Name, cust.AccountNumber);                   
            }
        }
        catch (DataServiceQueryException ex)
        {
                throw new ApplicationException("An error occurred during query execution.", ex);
        }

Это проверено на консольном приложении, ориентированном на netcoreapp3.0, поэтому должно работать в приложении Blazor. Ответим здесь, если возникнут какие-либо проблемы.

Надеюсь, это поможет всем, кто хочет сделать то же или подобное.

...