У меня есть сложный класс, и когда я обновляю данные в View и сохраняю их в базу данных, Entity сохраняет их дважды в дочерние данные класса.
public class Parent
{
public int ID { get; set; }
public string Name { get; set; }
public List<Children> Children { get; set; }
}
public class Children
{
public int ID { get; set; }
public string Name { get; set; }
}
var v = context.Parent.Include(c=>c.Children);
return View(v)
Файл View включает в себя
@model Parent
<input asp-for=Parent.Name >
for(int i; i<Model.Child.Count();i++)
{
<input asp-for=Parent.Child[1].Name />
}
Я очень упростил классы .. если изменить имя родителя и детей в браузере (Просмотр), он обновляет имя родителя, но вставляет новое имя для детей, а не обновляет имя детей.Каждый раз, когда я меняю имя ребенка, он добавляет новых детей в базу данных.
public void Save(Parent parent)
{
if (Parent.ID== 0)
{
context.Parent.Add(parent);
}
else
{
Paret dbEntry = context.Parent.FirstOrDefault(a => a.ID== parentID);
if (dbEntry != null)
{
dbEntry.ID= parent.ID;
dbEntry.Name= parent.NAme;
dbEntry.Children = parent.Children;
}
}
context.SaveChanges();
}