در ef با مقدار دهی مستقیم کلید خارجی ParentId مقدار دهی entity ان انجام نمی شود باید entity آن بر اساس کلید یافته شود و انتساب داده شود.بر اساس ParentId اگر صفر بود مقدار null واگر بزرگتر از صفر بود entity ان را یافته و انتساب داده میشود.
if (ModelState.IsValid)
{
city.Parent=ParentId>0? db.Cities.Find(ParentId):null;
db.Cities.Add(city);
db.SaveChanges();
return RedirectToAction("Index");
}