2016-09-14 3 views
1

Я не уверен, как определить Include (..). ThenInclude (...) в контексте отношения many-> many.Заполнение многих свойств навигации в EF Core

Так что это заселение свойства нав, SiteEducators ссылка

var site = this._dbContext.Sites.Include(x => x.SiteEducators).FirstOrDefault(); 

Определяется согласно документации

public DbSet<Educator> Educators { get; set; } 
    public DbSet<Site> Sites { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     #region Site->Educator Link 
     modelBuilder.Entity<SiteEducator>() 
      .HasKey(t => new { t.SiteId, t.EducatorId }); 

     modelBuilder.Entity<SiteEducator>() 
      .HasOne(pt => pt.Site) 
      .WithMany(p => p.SiteEducators) 
      .HasForeignKey(pt => pt.SiteId); 

     modelBuilder.Entity<SiteEducator>() 
      .HasOne(pt => pt.Educator) 
      .WithMany(t => t.SiteEducators) 
      .HasForeignKey(pt => pt.EducatorId); 
     #endregion 
    } 

проблемы, если я отлаживать «сайт» он имеет навигационное свойство, и я могу см. значение «EducatorId» просто отлично, но свойство навигации IT до преподавателя равно null.

Так что это было бы пустой

model.SiteEducators.FirstOrDefault().Educator 

Где это будет возвращать значение

model.SiteEducators.FirstOrDefault().EducatorId 

Пример того, что я имею в виду:

enter image description here

enter image description here

Должен быть какой-то «ThenInclude» в массиве?

Как я могу реализовать этот другой объект, что представляет собой синтаксис, любая идея?

Любая помощь будет большой, ТНХ ребята :)

+0

Вы также можете указать код модели? – Sampath

+0

Конечно, я нахожусь на своем телефоне и не могу ... Но его прямо выходят из документов. https://docs.efproject.net/ru/latest/modeling/relationships.html#many-to-many –

+0

Документы просто не говорят, как заполнять данные:/ –

ответ

0

Хорошо, так это выглядит, как будто это ряд вопросов, GIT, это исправление:

1) Карта ссылочную объекта таблицы в вашем ApplicationDbContext.

public DbSet<SiteEducator> SiteEducator { get; set; } 

(Sidenote: Didnt множественного числа, потому что таблица БД, который был сгенерирован из всего регулярных МНОГИХ> Многих установок не множественное числа его, не хотел, чтобы дублировать что-либо только в случае)

2) Теперь ПОСЛЕ вашего первоначального запроса запустите второй запрос для загрузки элементов данных. Вы не должны назначать их в любом месте EF только теперь должны знать, что они загружаются в корневой объект

var site = this._dbContext.Sites 
       .Include(x => x.SiteEducators) 
       .Include(x => x.Studies) 
       .FirstOrDefault(x => x.SupervisorToken == key); 


//Dummy query to load the data 
this._dbContext.SiteEducator.Include(x => x.Educator).Where(x => x.SiteId == site.Id).Load(); 

Проблема в том, что документы оставляют на важную часть отображения таблицы ссылок в, без, что не кажется, что способ загрузки вложенных объектов в список.

+0

работает ли это для вас? – Sampath

Смежные вопросы