Неожиданное пожелание свойства навигации ASP.NET Core OData - PullRequest
2 голосов
/ 19 марта 2019

В нашем проекте мы используем ASP.NET Core Web API, OData и Entity Framework Core. У нас есть случай, когда таблица A имеет ссылку на таблицу B. Основная проблема заключается в том, что значение внешнего ключа не существует в таблице B. Следовательно, когда мы делаем запрос OData, чтобы получить свойство навигации таблицы A в таблицу B, мы получаем неработающий Ответ JSON с незаполненным свойством навигации. В связи с этим наш заказчик поставил вопрос. Можно ли сказать OData для возврата значения NULL для свойства навигации, если внешний ключ не существует?

Я знаю, что это странное поведение и оно связано с противоречивыми данными, но у нас много таких неработающих ссылок.

Обновление

Я выяснил, в чем проблема. Я пытаюсь объяснить.

У меня есть следующие объекты:

public class EntityA
{
    [Key]
    public int Id { get; set; }

    public string Value { get; set; }

    public int EntityBId { get; set; }

    public EntityB EntityB { get; set; }
}

public class EntityB
{
    [Key]
    public int Id { get; set; }

    [Required]
    public string Value { get; set; }
}

Также у меня есть EntityA {Id = 1, Value = "A", EntityBId = 1}, но EntityB не представлен с Id = 1. Итак, когда я пытаюсь сделать запрос ~ / odata / entitya? $ расширение = entityb ($ select = id, value), запрос обрабатывается неправильно, поскольку OData не может установить для EntityB.Value значение NULL. EntityB.Value требуется.

Может быть, мне следует удалить ReuiredAttribute из IEdmModel. В данный момент я не знаю, как решить эту проблему, когда у нас неправильный внешний ключ.

Я все еще пытаюсь найти решение. : - (

...