STE ChangeTracker.OriginalValues总是空的

本文关键字:ChangeTracker OriginalValues STE | 更新日期: 2023-09-27 18:08:55

我在从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

我做错了什么吗?

谢谢

STE ChangeTracker.OriginalValues总是空的

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

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

编辑:

你不会得到原始值的共同属性,因为它没有存储(我理解的模板)。它在SQL分析器中也可见。如果你在一个有50个属性的实体中改变单个标量属性,并将改变应用到新的上下文,它将创建包含所有50个属性的更新(附加实体的标准更改跟踪将只传递修改的属性)。

如果你想知道通用属性的原始值,你必须修改模板以支持该特性