我无法从我的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
我做错了吗?
由于
答案 0 :(得分:0)
整个ChangeTracker
是您应用程序的一部分 - 它是由STE T4模板生成的类,因此您可以轻松跟踪OriginalValues
应该执行的操作。
OriginalValues
用于存储原始加载的外键和相关实体。它们不用于常见属性,但您可以根据需要修改模板,也可以使用更改跟踪器来获取这些属性。
编辑:
您不会获得公共属性的原始值,因为它没有存储(因为我理解模板)。它在SQL事件探查器中也可见。如果您更改具有50个属性的实体中的单个标量属性并将更改应用于新上下文,则它将使用所有50个属性创建更新(附加实体上的标准更改跟踪将仅传递该已修改的属性)。
如果您想了解公共财产的原始价值,您必须修改模板以支持此类功能。