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);
}
}