EF changeTracker没有给出正确的价值

时间:2015-08-11 04:20:37

标签: entity-framework change-tracking

您好我正在使用EF5 DataBase First。并使用Change Tracker跟踪Modified元素。我的要求之一是: ROWA rowB中 如果我改变RowB的值“RowB应该被禁用并且应该创建RowC”。[WorkingFine]

                var rowC = CreateEntityObjectBySelectedTableName(selectedDataTable);
                rowC.IsActiveRecord = true;
                context.Context.XYZTypes.Add(rowC);
                context.Context.Entry(rowC).State = EntityState.Added;
                changedEntity.CurrentValues.SetValues(changedEntity.OriginalValues);//for RowB business Req
                rowB.IsActiveRecord = false;//To disable RowB business Req

问题:现在,如果我更改了RowC,则更改跟踪器仍然将RowB作为已修改状态而不是RowC。提前致谢!! 上面的代码片段在第一次迭代中正常工作。但后来再试一次我的DBContext有rowB为Modified而不是RowC。

1 个答案:

答案 0 :(得分:1)

用户EF对象更改跟踪器。实体框架中有两种连接和断开连接模式。并且ObjectChangeTracker将跟踪您在实体中的更改。 注意:它会使您的实体对象变重。因此,请选择要跟踪的属性并仅使用这些属性。