STE ChangeTracker.OriginalValues ​​всегда пусто - PullRequest
0 голосов
/ 17 сентября 2011

У меня проблемы с получением OriginalValues ​​из моего EF STE DTO.

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

Я что-то не так делаю?

Спасибо

1 Ответ

0 голосов
/ 17 сентября 2011

Всего ChangeTracker является частью вашего приложения - это класс, сгенерированный шаблоном STE T4, так что вы можете легко отслеживать, что должен OriginalValues делать.

OriginalValues используются для хранения оригинальных загруженных внешних ключей и связанных объектов, если вы изменяете свойство навигации в отслеживаемом объекте. Они не используются для общих свойств, но вы можете изменить шаблон в соответствии со своими потребностями и использовать трекер изменений для этих свойств.

Edit:

Вы не получите первоначальное значение общего свойства, поскольку оно не сохраняется (как я понимаю шаблон). Это также видно в профилировщике SQL. Если вы измените одно скалярное свойство в объекте, который имеет 50 свойств, и примените изменения к новому контексту, это создаст обновление со всеми 50 свойствами (стандартное отслеживание изменений для присоединенного объекта будет передавать только это измененное свойство).

Если вы хотите узнать исходное значение общего свойства, вы должны изменить шаблон для поддержки такой функции.

...