[英]ASP.NET-MVC3 with EF4.1, Editing navigation properties doesn't alter data after SaveChanges
[英]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.