C# 实体框架创建与现有实体相关的新实体

C# 实体框架创建与现有实体相关的新实体,c#,entity-framework,entity-framework-core,C#,Entity Framework,Entity Framework Core,我有学生实体,它有类(类可以有许多学生) 这是我的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; s

我有
学生
实体,它有
(类可以有许多学生)

这是我的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; }
}
当我创建新学生并从下拉列表中选择class id时,将创建新类(使用空值和随机id),而不是使用该类。 我不确定哪里是修复这个错误的最好方法?是Automapper、context.cs类中的问题还是我的add方法本身错误

在我的服务中,我这样做:

public Students PostStudent(StudentsDTO item)
    {
        var sub = _mapper.Map<Students>(item);
        _repository.PostStudent(sub);
        return sub;
    }
Automapper.cs:

            CreateMap<Students, StudentsDTO>()
            .ReverseMap();

您的映射正确吗?对我来说它看起来可疑。有一个名为“class”的类吗?学生实体中是否缺少该类型的属性?我遇到过一些错误的行为,比如你报道的那种。问题总是在地图上。我犯过很多次的一个经典错误是双向关联。你的映射正确吗?对我来说它看起来可疑。有一个名为“class”的类吗?学生实体中是否缺少该类型的属性?我遇到过一些错误的行为,比如你报道的那种。问题总是在地图上。我犯过很多次的一个典型错误是双向联想。
            CreateMap<Students, StudentsDTO>()
            .ReverseMap();
 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");
        });
[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);
        }
    }