Спасибо за помощь, я использую много ко многим.
Решаю, я создаю новый класс:
public class TrainingPlanExercise
{
public Guid TrainigPlanId { get; protected set; }
public TrainingPlan TrainigPlan { get; protected set; }
public Guid ExerciseId { get; protected set; }
public Exercise Exercise { get; protected set; }
}
А в TrainingPlan я заменяю Список упражнений на Список TrainingPlanExercise.
Мой EntityFramework DbContext теперь выглядит так:
public class GymContext : DbContext
{
public GymContext(DbContextOptions<GymContext> options) : base(options) { }
public DbSet<Exercise> Exercises { get; set; }
public DbSet<TrainingPlan> TrainingPlans { get; set; }
public DbSet<TrainingPlanExercise> TrainingPlanExercises { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<TrainingPlanExercise>()
.HasKey(e => new { e.ExerciseId, e.TrainigPlanId });
modelBuilder.Entity<TrainingPlanExercise>()
.HasOne(x => x.TrainigPlan)
.WithMany(x => x.Exercises)
.HasForeignKey(x => x.TrainigPlanId);
}
}
К сожалению, я снова застрял. Когда я хочу получить из БД одну запись TrainingPlan, используя этот метод:
public TrainingPlan Get(Guid id)
=> _context.TrainingPlans.Include(x => x.Exercises).Single(x => x.Id == id);
Я получаю запись с нулевым упражнением в List TrainingPlanExercise.
Должен ли я добавить что-то еще в DbContext или есть другое решение?
КСТАТИ. Я использовал EF core.