2013-02-18 2 views
0

Мое требование - обновить свойство UpdateDate объекта при вызове метода ObjectContext.SaveChanges, и для этого я попытался подключить обработчик событий для события savechanges, где я хочу найти объект, который обновляется и обновляется его свойство UpdateDate, но я не нахожу способ найти объект, который обновляется.Обработчик событий для события ObjectContext.SaveChanges

Любая идея? Я делаю правильную вещь для достижения моего требования?

ответ

0

вы можете посмотреть в ObjectStateManager

что-то вроде этого:

private void context_SavingChanges(object sender, EventArgs e) 
{ 
    var context = (ObjectContext)sender; 
    var lst = context.ObjectStateManager 
        .GetObjectStateEntries(EntityState.Modified); 

    foreach(var item in lst) 
    { 
     var entity = item.Entity; 
     // TODO: set values here: 
    } 
} 
+0

спасибо человеку! Это сработало! Есть ли какой-либо предопределенный способ, как ваш ответ, установить значение какого-либо свойства? Как я хочу установить значение UpdateDate обновляемого объекта, или Reflection - единственный способ? –

+0

Np :) Я бы предложил вам расширить объекты, которые необходимо обновить с помощью интерфейса (возможно, 'IUpdateEntity' или что-то еще), которое вы можете использовать в своем цикле. что-то вроде: 'var entity = item.Entity as IUpdateEntity' –

+1

Да, это пришло мне в голову, но, к счастью, отражение выполнило требование более легко :) И теперь все работает потрясающе! –

Смежные вопросы