hoe*_*etz 14 c# entity-framework-4
我有一个"请求"实体与"RequestProperty"实体的关系为1 ..*.所以在"请求"中有一组RequestProperty对象.当我更新"请求"时,我想删除RequestProperty EntityCollection中的所有项目,并添加来自传入域对象的新项目.当我遍历Request.Properties集合并调用项目中的remove或a DeleteObject时,枚举失败,因为集合已被修改.
截至目前我正在这样做:
while (true)
{
if (newRequest.Properties.Count > 0)
context.RequestPropertySet.DeleteObject(newRequest.Properties.First());
else
break;
}
Run Code Online (Sandbox Code Playgroud)
由于这不是真的"酷",我认为必须有另一种方法来清空一个关系的集合.谢谢你的想法.
Lad*_*nka 21
答案取决于您对实体进行建模的方式.如果您使用的是共同的独立关系或外键关系,则必须使用当前的方法 - 我在项目中也使用它.
如果你定义了识别关系,你就可以Clear像@Craig所描述的那样只在集合上调用.识别关系是特殊关系,其中从属实体的主键包含父实体的外键.

该示例显示了具有外键标识关系的Order实体和OrderItem实体.主键OrderItem由唯一Id和表OrderIdFK组成Order.使用此配置,您无需迭代OrderItems并单独删除每个项目.只需OrderItem从集合中删除将在数据库中执行删除,清除集合将删除OrderItem数据库中的所有相关内容.