Сейчас я работаю над личным проектом, использующим ядро ef с SQLLite в качестве основного туберкулеза. У меня возникла проблема, связанная с тем, что A) некоторые из определяемых мной таблиц не созданы, и B) те, которые, по-видимому, имеют неправильное имя. Мне интересно, связано ли это с тем, как я определил свои отношения (хотя мне это кажется нормальным).
Обсуждаются следующие таблицы: членство, тренировки, группы упражнений и упражнения. Отношение: Членство 1: N Тренировки Тренировки 1: N ExerciseGroups ExerciseGroups 1: N Упражнения
Таким образом, по сути, это вложенная структура. Моя проблема в том, что когда я запускаю код, я вижу, что у меня есть созданная таблица «Упражнения и тренировки», обратите внимание, что их имена должны быть «Упражнения и тренировки», и я вообще не вижу свою созданную таблицу «ExerciseGroups».
В моем DataContext я определяю их следующим образом:
public DbSet<Membership> Memberships { get; set; }
public DbSet<Workout> Workouts { get; set; }
public DbSet<ExerciseGroup> ExerciseGroups { get; set; }
public DbSet<Exercise> Exercises { get; set; }
builder.Entity<Membership>()
.HasMany(x => x.Workouts)
.WithOne(y => y.Membership);
builder.Entity<Workout>()
.HasMany(x => x.ExerciseGroups)
.WithOne(y => y.Workout);
builder.Entity<ExerciseGroup>()
.HasMany(y => y.Exercises)
.WithOne(x => x.ExerciseGroup);
Затем для заполнения данных я отправляю их по отдельности, используя метод Entity.HasData.
Объекты домена определены следующим образом (я только копирую соответствующую часть, которая отображает взаимосвязь)
public class Membership {
public List<Workout> Workouts { get; set; }
}
public class Workout {
public Membership Membership { get; set; }
public string MembershipId { get; set; }
public List<ExerciseGroup> ExerciseGroups { get; set; }
}
public class ExerciseGroup {
public string WorkoutId { get; set; }
public Workout Workout { get; set; }
public List<Exercise> Exercises { get; set; }
}
public class Exercise {
public string ExerciseGroupId { get; set; }
public ExerciseGroup ExerciseGroup { get; set; }
}
Я что-то упускаю из виду?