Пустое навигационное свойство
У меня есть класс Profile и Event отношение многое-к-одному.
Вот так это выглядит
public class Profile
{
public Profile()
{
EventsIAmWho = new List<Event>();
EventsIAmWhere = new List<Event>();
}
public int Id { get; set; }
public virtual ICollection<Event> EventsIAmWho { get; set; }
public virtual ICollection<Event> EventsIAmWhere { get; set; }
}
public class Event
{
public int Id { get; set; }
public int WhereProfileId { get; set; }
public int WhoProfileId { get; set; }
public virtual Profile WhereProfile { get; set; }
public virtual Profile WhoProfile { get; set; }
public string Text { get; set; }
public DateTime Posted { get; set; }
}
Далее я связываю эти таблицы через Fluent API:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Profile>(b =>
{
b.HasKey(o => o.Id);
b.Property(o => o.Id).ValueGeneratedOnAdd();
b.HasMany(p => p.EventsIAmWho).WithOne(c => c.WhoProfile).HasForeignKey(x => x.WhoProfileId);
});
modelBuilder.Entity<Profile>(b =>
{
b.HasMany(p => p.EventsIAmWhere).WithOne(c => c.WhereProfile).HasForeignKey(x => x.WhereProfileId);
});
foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys()))
{
relationship.DeleteBehavior = DeleteBehavior.Restrict;
}
}
После миграции и обновления Базы данных, получаю пустое навигационное свойство Events:
userProfile = _context.Profiles.Where(x => x.Id == id).Include(e => e.EventsIAmWhere).FirstOrDefault();
В SQL Profiler просто отсутствует нужный JOIN к таблице Events:

Что я делаю не так?