2011-01-06 71 views
0

例:某产品实体装载包括其变量没有跟踪附加实体ObjectContext的不相关的实体EF4 POCO

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

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

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

含义,无论这些变化可被保存:

  • 甲标签已从产物
  • 的标签已被添加到该产品
  • 的标签已被修改去除(例如名已更改)

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

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

回答

1

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

+0

感谢您的建议。这可能是我最终会做的缺乏更好的选择。 – bernhof 2011-01-10 08:14:42