entity framework4从实体集合中删除对象
我有一个与“RequestProperty”实体具有1 .. *关系的“请求”实体。 所以在Request中有RequestProperty对象的集合。 当我更新“请求”时,我想删除RequestProperty EntityCollection中的所有项目,并从传入域对象中添加新项目。 当遍历Request.Properties
集合并调用项目上的remove或DeleteObject
时,枚举失败,因为集合已被修改。
截至目前我正在这样做:
while (true) { if (newRequest.Properties.Count > 0) context.RequestPropertySet.DeleteObject(newRequest.Properties.First()); else break; }
既然这不是很“酷”,我认为必须有另一种方式来清空一个关系集合。 谢谢你的想法。
答案取决于你build模实体的方式。 如果你正在使用普通的独立关系或外键关系,你将不得不使用你目前的方法 – 我也在我的项目中使用它。
如果您定义了标识关系,您将能够在收集时调用Clear
@Craig所描述的。 识别关系是依赖实体的主键包含父实体的外键的特殊关系。
该示例显示了使用外键标识它们之间的关系的Order
实体和OrderItem
实体。 OrderItem
主键由唯一的Id
和OrderId
组成,它是Order
表的FK。 使用这种configuration,您不需要遍历OrderItem
并单独删除每个项目。 从集合中简单地删除OrderItem
将作为数据库中的删除来执行,清除集合将删除数据库中的所有相关OrderItem
。
使用Clear()
方法:
newRequest.Properties.Clear();