0

我试图更新单个实体对象的 NavigationProperty,但在 SaveChanges 之后它没有更新。

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

在尝试通过绑定之前,它工作得很好......

代码:

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();
    }
4

2 回答 2

1

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

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

于 2013-06-21T20:07:04.167 回答
0

而不是手动设置参考

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>
于 2013-06-25T12:20:18.170 回答