0

我无法从我的 EF STE DTO 获取 OriginalValues。

var _Item = new MyClass();
_Item.StartTracking();    // ChangeTracker.OriginalValues.Count = 0
_Item.Name = "Jerry";     // ChangeTracker.OriginalValues.Count = 0
_Item.Name = "Bob";       // ChangeTracker.OriginalValues.Count = 0
_Item.AcceptChanges();    // ChangeTracker.OriginalValues.Count = 0
_Item.Name = "Sam";       // ChangeTracker.OriginalValues.Count = 0

难道我做错了什么?

谢谢

4

1 回答 1

0

WholeChangeTracker是您的应用程序的一部分 - 它是由 STE T4 模板生成的类,因此您可以轻松跟踪应OriginalValues该做什么。

OriginalValues如果您修改跟踪实体上的导航属性,则用于存储原始加载的外键和相关实体。它们不用于公共属性,但您可以根据需要修改模板并为这些属性使用更改跟踪器。

编辑:

您不会获得公共财产的原始价值,因为它没有被存储(据我了解模板)。它在 SQL 探查器中也可见。如果您更改具有 50 个属性的实体中的单个标量属性并将更改应用于新上下文,它将创建包含所有 50 个属性的更新(附加实体上的标准更改跟踪将仅传递该修改后的属性)。

如果您想知道公共属性的原始值,您必须修改模板以支持该功能。

于 2011-09-17T10:05:58.380 回答