gpt4 book ai didi

c# - Entity Framework 4 从实体集合中删除对象

转载 作者:可可西里 更新时间:2023-11-01 07:54:13 25 4
gpt4 key购买 nike

我有一个与“RequestProperty”实体具有 1..* 关系的“请求”实体。所以在“请求”中有一个 RequestProperty 对象的集合。当我更新“请求”时,我想删除 RequestProperty EntityCollection 中的所有项目并从传入的域对象中添加新项目。当我遍历 Request.Properties 集合并对项目调用 remove 或 DeleteObject 时,枚举失败,因为集合已被修改。

到目前为止,我正在这样做:

while (true)
{
if (newRequest.Properties.Count > 0)
context.RequestPropertySet.DeleteObject(newRequest.Properties.First());
else
break;
}

因为这不是很“酷”,所以我认为必须有另一种方法来清空关系集合。谢谢你的想法。

最佳答案

答案取决于您为实体建模的方式。如果您使用公共(public)独立关系或外键关系,您将不得不使用您当前的方法 - 我也在我的项目中使用它。

如果您定义了识别关系,您将能够像@Craig 描述的那样在集合上调用Clear。标识关系是依赖实体的主键包含父实体的外键的特殊关系。

Example EF model

该示例显示了 Order 实体和 OrderItem 实体,它们之间具有外键标识关系。 OrderItem 的主键由唯一的IdOrderId 组成,OrderIdOrder 表的外键。使用此配置,您无需遍历 OrderItem 并单独删除每个项目。简单地从集合中删除 OrderItem 将作为数据库中的删除执行,清除集合将删除数据库中所有相关的 OrderItem

关于c# - Entity Framework 4 从实体集合中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com