Структура сущности создает новую сущность по отношению к существующей сущности - PullRequest
1 голос
/ 29 апреля 2019

У меня есть 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);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...