Контроллер Odata возвращает не полный результат. (Модель EDM) - PullRequest
0 голосов
/ 07 ноября 2019

сценарий

У меня есть объект под названием Категория , определенный в моем EFcontext . Это чистый класс POCO. В методе EFContext OnModelCreating я применяю конфигурацию объекта. При запуске я настраиваю Odata для своих запросов и строю модель EDM на основе Conventional Builder . Мой контроллер унаследован от ODataController , имеет ODataRoutePrefix , OdataRoute и EnableQuery .

Проблема

В моем ответе я получил:

{
"@odata.context": "https://localhost:44362/api/odata/$metadata#Categories",
"value": [

Это не ошибка. Он заканчивается на «[». Нет ошибки. httpstatus: 200

конфигурация odata

        app.UseMvc(options =>
        {
            options.EnableDependencyInjection();
            options.Select().Filter().OrderBy().Count().Expand().MaxTop(100).SkipToken();
            options.MapODataServiceRoute("odata", "api/odata", GetEdmModel());               
        });


        private static IEdmModel GetEdmModel()
    {
        ODataModelBuilder builder = new ODataConventionModelBuilder();
        var category = builder.EntitySet<Category>("Categories");
        category.EntityType.HasKey(c => c.Id);

        return builder.GetEdmModel();
    }

EF CategoryTypeConfiguration

    public void Configure(EntityTypeBuilder<Category> categoryConfiguration)
    {
        categoryConfiguration.ToTable("Categories", QueryEFContext.DefaultSchema);

        categoryConfiguration.HasKey(category => category.Id);

        categoryConfiguration.Property(category => category.Name).IsRequired();
        categoryConfiguration.Property(category => category.Color).IsRequired();
    }

Tried

Возвращает правильный ответ при удалении строки:

 modelBuilder.ApplyConfiguration(new CategoryTypeConfiguration());

1 Ответ

1 голос
/ 08 ноября 2019

Я однажды столкнулся с этой ошибкой. В моем случае это произошло из-за ошибки в Entity Framework, но служба все равно вернула 200 OK.

Чтобы проверить, так ли это в вашем приложении, вы можете настроить Visual Studio на все исключения:

  • Нажмите: Отладка -> Windows -> Настройки исключений (Ctrl + Alt + E)
  • Проверьте: «Исключения общего времени выполнения»

Затем отправьте запрос еще раз и посмотрите, не появятся ли какие-либо исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...