簡體   English   中英

在SaveChanges EF 4.1之后不會更新導航屬性

[英]Navigation Property not updating after SaveChanges EF 4.1

我試圖更新單個實體對象的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();
    }

您需要直接將導航實體更新到上下文。 不要更新您的item.MyNavObject然后將item發送到上下文。 將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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM