实体框架:刷新不会触发属性通知?

时间:2010-04-12 08:52:07

标签: entity-framework refresh

我有一个班级Item。我的窗口显示了包含这些项目的TreeView,右侧有一个详细信息表单(用于编辑Item的名称)。

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

这里似乎有什么问题?

1 个答案:

答案 0 :(得分:1)

只是为了完成这个问题。

在我的情况下,问题是TreeView实际上绑定到包含item属性的对象,例如:

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

所以它是另一个实体的导航属性。这说我们可以说TreeView没有,显然检查了props中的变化,当导航属性发生变化时,EntityObject类不会触发PropertyChanged事件。对此的修复是要么具有替代属性(不是由EF自动生成),它将触发AssociationChanged事件处理程序内的OnPropertyChanged。

或者如果使用POCO它甚至更简单 - 在您的虚拟属性项中,您可以立即触发OnPropertyChanged:)