Как перевести ObjectStateEntry.OriginalValues ​​в Entity? - PullRequest
4 голосов
/ 10 сентября 2010

Как перевести ObjectStateEntry.OriginalValues ​​в Entity?Я думал, что могу сделать это с помощью метода ObjectContext.Translate, но вместо этого я должен передать DataReader.Есть ли способы?

1 Ответ

3 голосов
/ 13 сентября 2010

Чтобы преобразовать 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())
        );
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...