2010-04-12 53 views
0

我有一个班Item。我的窗口显示一个TreeView与这些项目,并在右侧有一个详细信息窗体(编辑Item的名称)。实体框架:刷新不会触发属性通知?

无论如何,当我编辑文本框中的项目名称,然后按取消按钮(它调用Context.Refresh(StoreWins, myItemEntity))UI不会立即用数据库中的旧值更新 - 我必须切换例如到树中的另一个实体,然后它被更新。

这似乎是什么问题?

回答

1

只是为了完成这个问题。

在我的情况下,问题是,TreeView控件实际上是绑定到一个对象,containes项目属性,例如:

class ItemContainer 
{ 
    public Item Item { get; set; } 
} 

所以这是另一个实体的导航属性。这就是说,我们可以说TreeView不会显式检查道具中的更改,并且当导航属性更改时,EntityObject类不会触发PropertyChanged事件。对此的解决方案是要么有一个替代属性(不是由EF自动生成),它将触发AssociationChanged事件处理程序中的OnPropertyChanged。

或者如果使用POCO它甚至更简单 - 在您的虚拟财产项目中,您可以立即启动OnPropertyChanged :)