2013-02-18 40 views
0

我的要求是更新对象的UpdatedDate财产每当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

感谢了很多人!它非常有效!是否有任何预定义的方式来设置任何属性的值?就像我想设置正在更新的对象的UpdatedDate值,或者反射是唯一的方法? – 2013-02-18 14:13:00

+0

Np个:)我会suggets您展开需要有一个接口(也许'IUpdateEntity'或某事),你可以在你的循环使用更新的实体。是这样的:'VAR实体= item.Entity作为IUpdateEntity' – 2013-02-18 14:16:44

+1

呀,这样来到我的脑海但幸运的反射更容易满足的要求:)现在一切工作真棒! – 2013-02-19 06:55:10