SaveChanges EF 4.1之后导航属性未更新
本文关键字:属性 更新 导航 之后 EF SaveChanges | 更新日期: 2023-09-27 18:19:37
我试图更新单个实体对象的NavigationProperty,但在SaveChanges之后没有更新。
只有当对象实体没有通过属性绑定到任何UI元素时,它才有效。我的意思是,如果我将属性绑定到UI,并更改navigatio属性,则该属性会正常更改,但不会在数据库中更新。
在尝试通过绑定完成之前,它运行得很完美。。。
代码:
public TProd_NCMProd ItemAt
{
get { return itemAt; }
set
{
itemAt = value;
OnPropertyChanged(new PropertyChangedEventArgs("ItemAt"));
}
}
...
...
...
private void save()
{
//ItemAt.TProd_NCMGrupo is my navigation property
ItemAt.TProd_NCMGrupo = ((TProd_NCMGrupo)cb_ncmGrupo.SelectedItem);
itemAtBo.update(ItemAt);
itemAtBo.saveChanges();
}
...
Update和Savechanges方法(DAO层):
public void update(T pEntity)
{
entidades.ApplyCurrentValues<T>(pEntity.GetType().Name, pEntity);
}
public void saveChanges()
{
entidades.SaveChanges();
}
您需要将导航实体直接更新到上下文中。不要更新您的项目。MyNavObject然后将项目发送到上下文。将MyNavObject发送到上下文进行更新。
工作单元和存储库模式将帮助您解决许多问题。
而不是手动设置参考
ItemAt.TProd_NCMGrupo = ((TProd_NCMGrupo)cb_ncmGrupo.SelectedItem);
我只是将组合框设置为绑定到ItemAt->TProd_NCMGrupo的导航属性,所以当我更改组合框选择时,导航属性也会更改。
Xaml
<combobox ItemsSource="{Binding ItemsCb}" SelectedItem="{Binding Path=ItemAt.TProd_NCMGrupo, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
...
</combobx>