У меня есть сущность Учитель, которая создает курс. Проблема заключается в том, что курс по какой-то причине не ссылается на учителя, который создал его. Учитель не ссылается на курс тоже. Пытался при помощи метода Update, но это не помогло.
public async Task<CourseResponse> AddCourse(CourseAddRequest courseAddRequest, Guid teacherId)
{
var teacher = await _teacherRepository.GetTeacher(teacherId);
if (teacher == null)
{
throw new Exception("User doesn't exist");
}
var course = _mapper.Map<Course>(courseAddRequest);
course.Teacher = teacher;
course.TeacherId = teacher.Id;
var addedCourse = await _courseRepository.AddCourse(course);
teacher.Courses.Add(addedCourse);
teacher = await _teacherRepository.UpdateTeacher(teacher);
return _mapper.Map<CourseResponse>(addedCourse);
}
Teacher:
public class Teacher : BaseEntity
{
public string Name { get; set; }
public string LastName { get; set; }
public List<Course> Courses { get; set; } = new List<Course>();
}
Course:
public class Course : BaseEntity
{
public string Header { get; set; }
public string Description { get; set; }
public Guid TeacherId { get; set; }
public Teacher Teacher { get; set; }
public List<Student> StudentsOnCourse { get; set; } = new List<Student>();
}
Пытался организовать связь один-ко-многим, но это не помогло:
class CourseEntityTypeConfiguration : IEntityTypeConfiguration<Course>
{
public void Configure(EntityTypeBuilder<Course> builder)
{
builder.HasOne(c => c.Teacher)
.WithMany(t => t.Courses)
.HasForeignKey(c => c.TeacherId);
}
}
public class UniDbContext : DbContext
{
public UniDbContext(DbContextOptions<UniDbContext> options) : base(options)
{
}
public DbSet<Course> Courses { get; set; }
public DbSet<Student> Students { get; set; }
public DbSet<Teacher> Teachers { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfigurationsFromAssembly(typeof(CourseEntityTypeConfiguration).Assembly);
}
}
В Startup:
services.AddDbContext<UniDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
sqlOpt => sqlOpt.MigrationsAssembly(typeof(UniDbContext).Assembly.FullName)
));
У меня есть git-репозиторий, в котором можно поподробнее все посмотреть:
https://github.com/ChuvashPeople/UniversityProject
Спасибо за помощь.