У меня есть приложение. Net Core 3.1 с базой данных SQL. Я использую прокси с отложенной загрузкой для автоматического извлечения данных из связанных таблиц. По сути, у меня есть таблица, которая ссылается на некоторые другие объекты через отношение 1-ко-многим или 1-к-1. Дело в том, что в большинстве случаев все отношения в порядке, каждая сущность загружена, и я могу прочитать ее свойства (например, поле имени).
Но, в очень специфических c случаях, эти сущности не будет загружаться , хотя отношение Id есть. Это выглядит так:
Модель выглядит следующим образом:
public partial class Delegation
{
public Guid Id { get; set; }
public int UserFrom { get; set; }
public int UserTo { get; set; }
public virtual User UserFromNavigation { get; set; }
public virtual User UserToNavigation { get; set; }
}
Инициализация внутри контекста базы данных:
public virtual DbSet<Delegation> Delegations { get; set; }
...
modelBuilder.Entity<Delegation>(entity =>
{
entity.Property(e => e.Id).ValueGeneratedNever();
entity.HasOne(d => d.UserFromNavigation)
.WithMany(p => p.DelegationsUserFromNavigation)
.HasForeignKey(d => d.UserFrom)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_Delegations_Users_From");
entity.HasOne(d => d.UserToNavigation)
.WithMany(p => p.DelegationsUserToNavigation)
.HasForeignKey(d => d.UserTo)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK_Delegations_Users_To");
});
Этот конкретный пример c является только одним из Многие также не загружают виртуальные ICollections других объектов в других моделях.
Здесь, на снимке экрана отладки, UserTo в порядке, но UserFrom НЕДЕЙСТВИТЕЛЕН.
Ручной поиск сущности по Id и получение ее свойств работает, но делает код намного грязнее.
Есть ли способ заставить EF загрузить эти недостающие объекты или я здесь ошибаюсь? Такое поведение выглядит действительно случайным.