除了实体之外,SaveChanges有可能吗?

时间:2012-07-25 07:12:09

标签: c# entity-framework entity-framework-4 data-access-layer

问题

启动一个新实体(称之为“ TargetEntity ”)进行插入,我正在使用其他实体属性(称之为“ TemplateEntity ”)。

TargetEntity 的某些属性正在获取 TemplateEntity 属性及其“导航属性”的值。

在某些特殊情况下,我必须对TemplateEntity道具和导航道具值进行一些更改。 例如,假设这是要填充的TargetEntity:

TargetEntity
- prop1
- prop2
- prop3

这是具有值的TemplateEntity:

TemplateEntity
- prop1
- NavProp1.prop2
- NavProp2.prop3

我想在TemplateEntity上应用一些更改,如下所示:

TemplateEntity to be applied
- prop1 * index1
- NavProp1.prop2 * 0
- NavProp2.prop3 *index2

限制和条件

  1. 我正在与实体合作,没有POCO,没有DTO。有很多嵌套的导航属性,制作它的扁平对象或克隆脱机嵌套对象非常复杂。

  2. 在许多方法中使用了TemplateEntity。每种方法都有自己的Context并保存更改(即日志等)。

  3. 问题

    如何保存更改,避免像TemplateEntity这样的实体及其“数据库中的导航更改?”

1 个答案:

答案 0 :(得分:0)

除非您:

,否则无法从工作单元中排除/跳过实体更新
  • 重新配置图表中该实体的状态 - 这意味着您必须遍历实体图并将所有内容设置为未更改
  • 首先不要将实体包含在工作单元中 - 实体图不能附加到上下文中 - 这通常会导致克隆对象图,这只能通过序列化和反序列化来实现(您的实体已经通过DataContractSerializer)。