В нашем проекте мы используем 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. В данный момент я не знаю, как решить эту проблему, когда у нас неправильный внешний ключ.
Я все еще пытаюсь найти решение. : - (