C# SaveChanges EF 4.1之后导航属性未更新

C# SaveChanges EF 4.1之后导航属性未更新,c#,entity-framework,binding,updating,navigation-properties,C#,Entity Framework,Binding,Updating,Navigation Properties,我正在尝试更新单个实体对象的NavigationProperty,但在SaveChanges之后它不会更新 它仅在对象实体未通过属性绑定到任何UI元素时才起作用,我的意思是,如果我将属性绑定到UI,并更改navigatio属性,则该属性会正常更改,但不会在数据库上更新 在尝试通过绑定实现之前,它工作得非常好 代码: 更新和保存更改方法(DAO层): 公共无效更新(T奔腾) { entidades.ApplyCurrentValues(pEntity.GetType().Name,pEntity)

我正在尝试更新单个实体对象的NavigationProperty,但在SaveChanges之后它不会更新

它仅在对象实体未通过属性绑定到任何UI元素时才起作用,我的意思是,如果我将属性绑定到UI,并更改navigatio属性,则该属性会正常更改,但不会在数据库上更新

在尝试通过绑定实现之前,它工作得非常好

代码:

更新和保存更改方法(DAO层):

公共无效更新(T奔腾)
{
entidades.ApplyCurrentValues(pEntity.GetType().Name,pEntity);
}
公共void saveChanges()
{
entidades.SaveChanges();
}

您需要将导航实体直接更新到上下文中。不要更新item.MyNavObject,然后将项目发送到上下文。将MyNavObject发送到上下文进行更新


工作单元和存储库模式将帮助您解决许多问题。

而不是手动设置引用

ItemAt.TProd_NCMGrupo = ((TProd_NCMGrupo)cb_ncmGrupo.SelectedItem);
我只是将组合框设置为绑定到我的ItemAt->TProd\u NCMGrupo的导航属性,因此当我更改组合框选择时,导航属性也会更改

Xaml


...

您能更具体一点吗?感谢您回答Prod\u NCMGrupo。更新(TProd\u NCMGrupo)是您应该拨打的电话。您正在调用itemAtBo.update(ItemAt),这是要在上下文中更新的错误实体。但是ItemAt是我应该更新的元素,因为ItemAt具有TProc\u NCMGrupo的外键。。。正确吗?您正在更新TProd\u NCMGrupo实体:ItemAt.TProd\u NCMGrupo=((TProd\u NCMGrupo)cb\u NCMGrupo.SelectedItem);,不是ItemAt entity.no,我正在更新对NCMGrupo | | ItemAt.TProd_NCMGrupo=我在组合框上选择的NCMGrupo的引用。因此,ItemAt将引用NCMGrupo
 public void update(T pEntity)
    {
        entidades.ApplyCurrentValues<T>(pEntity.GetType().Name, pEntity);
    }

 public void saveChanges()
    {
        entidades.SaveChanges();
    }
ItemAt.TProd_NCMGrupo = ((TProd_NCMGrupo)cb_ncmGrupo.SelectedItem);
<combobox ItemsSource="{Binding ItemsCb}" SelectedItem="{Binding Path=ItemAt.TProd_NCMGrupo, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
...
</combobx>