У меня есть Student
сущность с Class
(в классе может быть много учеников)
Это мои Student.cs и StudentDto.cs
public partial class Students
{
public int Id { get; set; }
public string FullName { get; set; }
public int? FkClass { get; set; }
}
public class StudentsDTO
{
public int Id { get; set; }
public string FullName { get; set; }
public int FkClass { get; set; }
public int FkClassNavigationId { get; set; }
public string FkClassNavigationTitle { get; set; }
}
Когда я создаюнового студента и выберите идентификатор класса из выпадающего списка, вместо того, чтобы использовать этот класс, создается новый класс (с нулевыми значениями и случайным идентификатором).Я не уверен, где лучший способ исправить эту ошибку?Это проблема в Automapper, context.cs или мой метод add сам по себе неправильный?
В моем сервисе я делаю это:
public Students PostStudent(StudentsDTO item)
{
var sub = _mapper.Map<Students>(item);
_repository.PostStudent(sub);
return sub;
}
и в репозитории я делаю следующее:
public void PostStudent(Students c)
{
this.museumContext.Add(c);
this.museumContext.SaveChanges();
}
Automapper.cs:
CreateMap<Students, StudentsDTO>()
.ReverseMap();
и context.s
modelBuilder.Entity<Students>(entity =>
{
entity.ToTable("students");
entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.FkClass).HasColumnName("fkClass");
entity.Property(e => e.FullName)
.HasColumnName("fullName")
.HasMaxLength(255);
entity.HasOne(d => d.FkClassNavigation)
.WithMany(p => p.Students)
.HasForeignKey(d => d.FkClass)
.HasConstraintName("Include");
});
Может кто-нибудь помочь мне понять, как это исправить?
Странная вещь, если я добавлю var a = _classesService.GetClassById(s.FkClass);
к своему контроллеру, он будет работать нормально.Дело не в том, что я назначаю то, что извлекаю или что-то в этом роде.
[HttpPost]
[AllowAnonymous]
public IActionResult PostStudent([FromBody] StudentsDTO s)
{
if (!this.ModelState.IsValid)
{
return this.BadRequest(ModelState);
}
try
{
var a = _classesService.GetClassById(s.FkClass);
var sub = this._service.PostStudent(s);
return Ok();
}
catch (Exception err)
{
return BadRequest(err);
}
}