实体框架保存本机类型属性,但不保存嵌套对象
本文关键字:保存 嵌套 对象 属性 框架 本机 类型 实体 | 更新日期: 2023-09-27 18:34:50
我将视图模型发布到我的控制器,并将其自动映射到实体对象,并使用 entry(( 方法保留它,根据它是添加还是更新来更改它的状态。我确保在自动映射后对象不为空,也许我坚持错误。我的问题是 中的嵌套对象不会保留更改。
public ActionResult saveUpdatePessoa(PessoaViewModel id)
{
if (ModelState.IsValid)
{
var pes = MvcApplication.Mapper.Map<PessoaViewModel, Pessoa>(id);
using (var db = new CityManagerDbCtx())
{
db.Entry(pes).State = pes.codigo == 0 ? EntityState.Added : EntityState.Modified;
//db.Entry(pes.endereco).State = pes.endereco.codigo == 0 ? EntityState.Added : EntityState.Modified;//Gives me error here if I uncomment this line
db.SaveChanges();
string smsg = id.codigo > 0 ? "Pessoa editada com sucesso." : "Pessoa salva com sucesso.";
ModelState.Clear();
return Json(new SubmitFormViewModel
{
success = true,
form = RenderHelper.PartialView(this, PESSOA_FORM_VIEW, new PessoaViewModel { dt_cad = DateTime.Now.Date, dt_nasc = DateTime.Now.Date }),
successMessages = new string[] { smsg },
errorMessages = new string[] { }
});
}
}
return Json(new SubmitFormViewModel
{
success = false,
form = RenderHelper.PartialView(this, PESSOA_FORM_VIEW, id),
successMessages = new string[] { },
errorMessages = ModelState.Values.SelectMany(m => m.Errors).Select(e => e.ErrorMessage).ToArray()
});
}
如果这些"嵌套对象"是类,则需要像"Pessoa"类一样显式更新它们。 它不会仅仅因为包装类已更新而隐式知道更新这些嵌套类。
但是,添加具有嵌套对象的类将添加所有内容。 它只是更新不同。