【问题标题】:Attaching entity to ObjectContext without related entities with EF4 POCO使用 EF4 POCO 将实体附加到没有相关实体的 ObjectContext
【发布时间】:2011-06-04 19:24:49
【问题描述】:

示例:加载包含其标签的产品实体不跟踪

repository.Product
  .Include("Tag")
  .Where(p => p.ProductID == 1)
  .Execute(MergeOption.NoTracking);

注意这是一个多对多的关系;一个产品可以有多个标签,标签可以关联多个产品。

在其他地方,我想保存对产品实体所做的任何更改,但不保存对其相关标签或其与这些标签的关系所做的更改。

意思是,这些更改都不能保存:

  • 标签已从产品中移除
  • 产品已添加标签
  • 标签已被修改(例如名称已更改)

所以我想我可以以某种方式将仅产品附加到新的 ObjectContext 并保存更改。但由于某种原因,我无法弄清楚如何仅将单个实体附加到对象上下文,而不是整个图形。

当然,我可以附加图表,然后手动分离除相关产品之外的所有其他实体,但这是一个糟糕的解决方案,我希望找到另一个解决方案。

【问题讨论】:

    标签: c# entity-framework-4 poco


    【解决方案1】:

    您可以尝试克隆您的产品(不是深度克隆!),附加克隆并保存更改。您的原始对象图将保持分离状态。唯一的问题可能是您使用时间戳之类的东西进行并发处理。您必须将新时间戳从克隆复制回原始实体,否则您将无法再次保存原始实体。

    【讨论】:

    • 感谢您的建议。这可能是我在没有更好的选择的情况下最终会做的事情。
    • 当您说“克隆”时,您指的是我不知道的此类克隆功能的现有实现,还是“自制”方法?
    • 开箱即用不提供克隆。有ICloneable接口,但你必须自己实现。
    猜你喜欢
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多