Чтобы преобразовать OriginalValues
в Entity
объект, вы можете использовать отражение над свойствами (у вас есть имена, похороненные в OriginalValues.DataRecordInfo.FieldMetadata[i].FieldType.Name
). Что вы планируете делать потом? Сравнить сущности свойство за имуществом? Было бы проще получить список измененных свойств напрямую:
var originalValues = yourEntry.OriginalValues;
var currentValues = yourEntry.CurrentValues;
var modifiedProperties = yourEntry.GetModifiedProperties();
foreach (var modifiedProperty in modifiedProperties)
{
LogChange(string.Format("Property: {0}, Original value: {1}, Current value: {2}",
modifiedProperty,
originalValues[modifiedProperty],
currentValues[modifiedProperty])
);
}
В качестве альтернативы, вы можете реализовать методы OnSomePropertyChanging
для объектов сущности и регистрировать изменения в режиме реального времени:
public partial class YourEntity
{
partial void OnSomePropertyChanging(string value)
{
LogChange(String.Format("Property: SomeProperty, Original value: {0}, Current value: {1}, Change time: {2}",
this.SomeProperty,
value,
DateTime.Now.ToShortTimeString())
);
}
}