我正在为两种情况调试此方法:一种是有父级,另一种是没有父级。
如果没有父级,则新 Person 的 id 为 0,但实际上从未保存到数据库中。
如果有父级,则在此方法中,新 Person 的 id 为 0,但会以正确的值(比表中的最高值多一个)将新记录插入到 db 中。
这里发生了什么?我知道我做错了什么,我只是不确定是什么。
我正在使用 EF Codefirst。
控制器方法的代码:
[HttpPost]
public ActionResult Create(CreatePersonViewModel viewModel)
{
if (ModelState.IsValid)
{
var parent = _db.Persons.FirstOrDefault(s => s.PersonId == viewModel.ParentId);
var person = new Person() { Name = viewModel.Name };
// if it has a parent, build new relationship
if (parent != null)
{
person.Parent = parent;
parent.Children.Add(person);
};
_db.Save();
return RedirectToAction("detail", "person", new { personId = person.PersonId });
}
return View(viewModel);
}