我有一个名为Parent
的表,它与一个名为Child
的表具有一对多关系。在EF模型中,Parent
是具有类型为Child
的称为ICollection<Child>
的属性的实体。
我可以在程序中执行此操作,以删除所有相关的Child
元素,然后重新填充它:
Parent entity = context.Parent.FirstOrDefault(someCondition);
entity.Child.Clear(); // remove all related child elements (in database, only data in the associated table is removed)
entity.Child.Add(newChildEntity)
context.SaveChanges();
但是,如果我需要使用条件删除Child
元素怎么办?
我尝试过:
entity.Child.Where(otherCondition).Clear();
但是由于Where
方法返回了IEnumerable<Child>
,所以我不能使用Clear()方法。
[其他尝试是在调用ICollection<Child>
方法之前强制转换为Clear
,但是引发了异常提示无法强制转换。
需要任何帮助吗?
[也许我可以得到entity.Child.Where(otherCondition)
,然后使用ForEach循环将Remove
所有元素,但是,除了提供非常差的性能,我认为这样,Child
元素也被删除,不仅是关系数据。
Jaime
我有一个名为Parent的表,它与一个称为Child的表具有一对多关系。在EF模型中,Parent是一个实体,其属性称为ICollection
这种方式: