как правильно выводить данные в связи "Многие ко многим" в EntityFrameworkCore Mysql
Допустим есть две таблицы: Games и Manufacture. Игра может в себе хранить несколько издателей, а издатель может в себе хранить несколько игр. В таком случае создаю ассоциативный класс Product. В итоге получаются такие классы:
public class Game
{
public int Id { get; }
[Display(Name = "название игры")]
public string Titleofgame { get; set; }
[Display(Name = "Описание")]
public string Description { get; set; }
[Display(Name = "Дата выхода")]
public DateTime DateRelese { get; set; }
public List<Manufacture> Manufactures { get; set; } = new List<Manufacture>();
public List<Product> Products { get; set; } = new List<Product>();
}
public class Manufacture
{
public int Id { get; }
[Display(Name = "Издатель")]
public string Titleofmanufactures { get; set; }
public List<Product> Products { get; set; }
public List<Game> Games { get; set; }
}
DBContext:
public DbSet<Game> Games { get; set; }
public DbSet<Manufacture> Manufactures { get; set; }
public DbSet<Product> Products { get; set; }
Затем сопоставляю связи через Fluent Api:
modelBuilder
.Entity<Game>()
.HasMany(c => c.Manufactures)
.WithMany(s => s.Games)
.UsingEntity < Product > (
j =>
j.HasOne(pt => pt.Manufacture)
.WithMany(t => t.Products)
.HasForeignKey(pt => pt.Idmanufacture),
j =>
j.HasOne(pt => pt.Game)
.WithMany(p => p.Products)
.HasForeignKey(pt => pt.idgame),
j =>
{
j.HasKey(t => new { t.idgame, t.Idmanufacture ,});
j.ToTable("Products");
}
);
И предположим уже добавил игру с двумя производителями. Затем хочу вывести для проверки всех производителей определённой игры:
Context.Games.Select(p=>p.Manufactures.Select(d=>d.Titleofmanufactures)
В итоге я получаю только первого производителя. Затем я устанавливаю, чтобы не отслеживались объекты контекста:
optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
В итоге у меня показались все производители. Почему так происходит? Перерыл всё что мог, но ясного объяснения (для меня) не нашёл.