c# - 从 EntityCollection 复制到 EntityCollection 不可能吗?

标签 c# entity-framework entity

您将如何执行此操作(伪代码):product1.Orders.AddRange(product2.Orders);

但是,函数“AddRange”不存在,那么如何将EntityCollection“Orders”中的所有项目从product2复制到product1?

应该很简单,但事实并非如此......

最佳答案

问题比你想象的要深。

您的 foreach 尝试失败,因为当您调用 product1.Orders.Add 时,实体会从 product2.Orders 中删除,从而呈现现有的枚举器无效,这会导致您看到的异常。

那么为什么实体会从 produc2 中删除呢?嗯,看起来很简单:因为订单一次只能属于一种产品。 Entity Framework 通过执行这样的规则来处理数据完整性。

如果我理解正确的话,您的目标实际上是复制订单从一种产品到另一种产品,对吗?

如果是这样,那么您必须在 foreach 循环中显式创建每个订单的副本,然后将该副本添加到 product1

出于某种对我来说相当模糊的原因,没有自动方法来创建实体的副本。因此,您几乎必须手动一一复制所有 Order 的属性。您可以通过将此逻辑合并到 Order 类本身中来使代码看起来更简洁 - 创建一个名为 Clone() 的方法来复制所有属性。不过,请确保不要复制“所有者产品引用”属性,因为您的全部目的是为其提供另一个所有者产品,不是吗?

无论如何,如果有不清楚的地方,请随时提出更多问题。祝你好运。

  • 费奥多尔

关于c# - 从 EntityCollection 复制到 EntityCollection 不可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2663414/

相关文章:

c# - 将 XML 文档转换为 HTTP POST 的 URL 编码查询字符串 - C#

c# - 删除特定用户创建的所有文件

c# - Entity Framework Core,从嵌套集合中删除项目

c# - 对 DbContext 的通用访问

swift - 如何与核心数据建立多对多关系? swift ,xcode

java - 如何在 Google App Engine 中正确初始化/定义 Text 类的对象?

根据特定值排序的 C# 数据结构

c# - 在 C# 中使用 FileSystemWatcher 时,HttpContext.Current 为空

c# - ViewModel 和单例模式

java - JPA:查询以根据实体类中定义的外键值获取结果?