Microsoft OData в .NET CORE 5 - при добавлении OData к службам появляется отсутствующая директива using, но пакет есть
Я разрабатываю в.NET Core 5.0. (Есть руководство Сэма Сюя по переходу на dotnet core 5)
Я вернулся к абсолютному минимуму с самым простым проектом API в Visual Studio.
У меня это работало в моем проекте ранее в этом году, и он работал на ядре.NET 5.0. См. Руководство выше.
В этом проекте я создал новый проект. Затем я пошел в NuGet, чтобы получить пакет "Microsoft.AspNet.OData" версии 7.4.1.
Затем я добавил в файл запуска следующее.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddCors();
services.AddControllers();
services.AddOData(); //THIS ONE
}
Я добавил "services.AddOData" и выдает ошибку,
Ошибка CS1061 "IServiceCollection" не содержит определения для "AddOData", и не может быть найден доступный метод расширения "AddOData", принимающий первый аргумент типа "IServiceCollection" (отсутствует ли директива using или ссылка на сборку?) JobsLedger.API C:\Users/.../JobsLedger.API\Startup.cs 35 Активно
Я уже добавил пакет, необходимый для этой услуги. Теперь у меня это работало пару месяцев назад.
Есть ли новый пакет, который вам нужно добавить?
Что я делаю неправильно, или это "критическое изменение", о котором я не знаю?
2 ответа
если вы используете .net5.0, требуется предварительный просмотр odata 8.0.
В rc2, согласно этой статье https://devblogs.microsoft.com/odata/attribute-routing-in-asp-net-core-odata-8-0-rc/, Сэм Сюй внес критические изменения.
«AddOData заменяется расширениями в ISerivceCollection на расширение в IMvc(Core)Builder.Миграция выполняется легко, сначала вызывая AddControllers(), а затем вызывая AddOData() ».
services.AddControllers()
.AddOData(opt => opt.AddModel("odata", GetEdmModel()));
Для .Net 7.0 AddOData работает с IMvcBuilder, как показано ниже.
services.AddMvc().AddOData();