我正在使用EF Core和Automapper来更新我的实体 . 我有一个名为“Aluno”的实体,它与“Endereco”有关系 . 这是代码:
public class Aluno : ApplicationUser{
...
public Endereco Endereco { get; set; }
...
}
public class AlunoViewModel : UserViewModel
{
public int Id { get; set; }
public EnderecoViewModel Endereco { get; set; }
}
public class Endereco{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get;set; }
...
}
public class EnderecoViewModel {
public int Id { get;set; }
...
}
自动配置:
config.CreateMap<Aluno, AlunoViewModel>().ReverseMap();
config.CreateMap<Endereco, EnderecoViewModel>().ReverseMap();
AlunosController:
[HttpPut]
public JsonResult Put([FromBody]AlunoViewModel vm)
{
if (ModelState.IsValid)
{
var aluno = _context.Alunos
.Single(o => o.Id == vm.Id);
Mapper.Map(vm, aluno);
_context.SaveChanges();
Response.StatusCode = (int)System.Net.HttpStatusCode.OK;
return Json(true);
}
Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest;
return Json(false);
}
当我尝试更新“Aluno”实体时,我在context.SaveChanges()上遇到异常:
当IDENTITY_INSERT设置为OFF时,无法在表'Enderecos'中为identity列插入显式值 .
但我不是要插入一个新的“Endereco”,只是更新实体“Aluno”,并且可能更新“endereco”,它在var aluno中正确加载 .
难道我做错了什么?
1 回答
请尝试以下语法: