Потреблять службу OData в C # не работает - PullRequest
0 голосов
/ 12 июня 2018

Я пытался понять этот урок: http://odata.github.io/odata.net/#OData-Client-Code-Generation-Tool

Я могу создать прокси без каких-либо проблем.Как описано.

Но в главе «Использование службы OData» это не работает.Я назвал приложение и прокси точно так, как показано в руководстве. Как я могу сделать доступными одаты в пространстве имен Microsoft?

Снимок экрана

  • Ошибка CS0234 Тип или имя пространства имен 'OData' не делаетсуществует в пространстве имен «Microsoft» (вам не хватает ссылки на сборку?) TrippinApp C: \ TrippinApp \ Program.cs 6 Active
  • Ошибка CS0246 Не удалось найти тип или имя пространства имен DefaultContainer (выотсутствует директива using или ссылка на сборку?) TrippinApp C: \ TrippinApp \ Program.cs 16 Active
  • Ошибка CS0246 Невозможно найти тип или имя пространства имен DefaultContainer (отсутствует директива using илиссылка на сборку?) TrippinApp C: \ TrippinApp \ Program.cs 16 Active

Я использовал:

  • Microsoft Visual Studio 2017 (пробная версия)
  • Microsoft.Data.Edm v5.8.3
  • Microsoft.Data.Odata v5.8.3
  • Microsoft.Data.Services.Client v5.8.3
  • System.Spatial v.5.8.3
  • Службы данных WCF 5.6 Инструменты (установлены)

продолжение:

@ Эвандро Паула: Спасибо за вашу помощь!Я пошел немного дальше благодаря вашей помощи.Но, к сожалению, я еще не достиг цели.

Я установил / обновил:

  • Microsoft Visual Studio 2017 (15.7.1) (пробная версия)
  • Microsoft.Data.Edm v5.8.3 (я не нашел более свежую версию)
  • Microsoft.Data.Odata v5.8.3 (я не нашел более свежую версию)
  • Microsoft.Data.Services.Client v5.8.3 (более свежую версию я не нашел)
  • Microsoft.OData.Client v7.4.4 (установлен)
  • Microsoft.OData.Core v7.4.4 (установлено)
  • Microsoft.OData.Edm v7.4.4 (установлено)
  • Microsoft.Spatial v7.4.4 (установлено)
  • System.Spatial v.5.8.3(Я не нашел более свежую)
  • Службы данных WCF 5.6 Инструменты (установлены) Снимок экрана NuGet

Теперь результаты выглядяткак это:

Компиляция работает с Proxy (TrippinProxy.cs), но без примера Odata.(Снимок экрана)

Как только я скопирую код из учебника, компиляция больше не работает.(Снимок экрана)

using System;
using Microsoft.OData.SampleService.Models.TripPin;

namespace TrippinApp
{
    class Program
    {
        static void Main(string[] args)
        {
            DefaultContainer dsc = new DefaultContainer(
                new Uri("http://services.odata.org/V4/(S(fgov00tcpdbmkztpexfg24id))/TrippinServiceRW/"));
            var me = dsc.Me.GetValue();
            Console.WriteLine(me.UserName);
        }
    }
}

источник: http://odata.github.io/odata.net/#OData-Client-Code-Generation-Tool

Теперь пространство имен Microsoft.OData найдено.Но не Microsoft.OData.SampleService (Скриншот)

Мне нужен небольшой пример.Как я могу инициализировать прокси и добавить продукт (CreateProduct)?Или как я могу получить пример из учебника и запустить его?

1 Ответ

0 голосов
/ 12 июня 2018

Сначала обновите пакеты, о которых вы упоминали в своем вопросе, до их последней версии.Похоже, Visual Studio не использовала последнюю версию в вашем случае.Я использую Visual Studio 2017 Enterprise Edition (версия 15.7.3) для этого теста.

  • Microsoft.OData.Client (версия 7.4.4)
  • Microsoft.OData.Core(версия 7.4.4)
  • Microsoft.OData.Edm (версия 7.4.4)
  • Microsoft.Spatial (версия 7.4.4)

После пакетовобновлены, вы увидите следующее ошибка сборки , которая связана с проблемой https://github.com/OData/lab/issues/80:

Severity    Code    Description Project File    Line    Suppression State
Error   CS0234  The type or namespace name 'EdmxReader' does not exist in the namespace 'Microsoft.OData.Edm.Csdl' (are you missing an assembly reference?) ODataClient C:\temp\NET\ODataClient\Connected Services\TrippingService\TrippingProxy.cs 510 Active

Разрешение для этой проблемы доступно наhttps://github.com/juliopinto15/lab/commit/deb1254301a775eb6771b0bed672dd3f56f37cfe.

Просто измените строку сгенерированного прокси (например, TrippingProxy.cs) ниже как часть метода LoadModelFromString () :

return global::Microsoft.OData.Edm.Csdl.EdmxReader.Parse(reader);

на

return global::Microsoft.OData.Edm.Csdl.CsdlReader.Parse(reader);
...