このメソッドを 2 つのケースでデバッグしています。1 つは親がある場合、もう 1 つは親がない場合です。
親がいない場合、新しい Person の ID は 0 ですが、実際にはデータベースに保存されません。
親が存在する場合、このメソッドでは新しい Person の id は 0 になりますが、正しい値 (テーブルの最大値より 1 大きい値) を持つ新しいレコードがデータベースに挿入されます。
ここで何が起こっているのですか?私は何か間違ったことをしていることを知っていますが、何がわからないだけです。
私は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);
}