Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过ef删除asp.net中的子记录_C#_Asp.net_Entity Framework - Fatal编程技术网

C# 如何通过ef删除asp.net中的子记录

C# 如何通过ef删除asp.net中的子记录,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我必须在我的项目中添加对象,每个对象在db中表示一个表。一个名称是“form”,另一个名称是“forminput”,一个form对象有许多forminput对象 下面是我的代码: form form = db.forms.find(id); form.name = "new name"; form.forminputs.clear(); foreach( forminput input in inputs) { form.forminputs.add(input); } db.Entry(f

我必须在我的项目中添加对象,每个对象在db中表示一个表。一个名称是“form”,另一个名称是“forminput”,一个form对象有许多forminput对象

下面是我的代码:

form form = db.forms.find(id);
form.name = "new name";
form.forminputs.clear();
foreach( forminput input in inputs)
{
  form.forminputs.add(input);
}
db.Entry(form).state = EntityState.Modified;
db.SaveChanges();
我想要的是删除所有子forminput对象,创建一组新的forminput对象,并在一个调用SaveChanges方法中将其保存到db中

但系统告诉我不能修改关系,因为一个或多个键不能为null


谁能帮我?谢谢。

您还需要删除每个对象,而不仅仅是关系

foreach (var input in form.forminputs.ToArray())
{
    db.Entry(input).State = EntityState.Deleted;
}
// form.forminputs.Clear();

form.Set().RemoveRange(form.forminputs);
//form.forminputs.Clear();
PS

不需要
清除
,因为标记为
已删除
删除范围
将从集合中删除每个对象

将表单标记为
已修改
是不必要的,因为它是一个被跟踪的实体,它将知道当前状态的任何变化

form.Set<forminput>().RemoveRange(form.forminputs);
// form.forminputs.Clear();