我注意到,當使用EF CodeFirst,並通過DBSet.Local
屬性建議here將我的UI綁定到ObservableCollection<T>
時,當實體添加到DBContext時UI會更新,但在修改時不會更新。使用EF Code-First時是否需要實現INotifyPropertyChanged?
似乎DBSet.Local
集合未被通知我的實體已更改。在使用EF代碼時 - 首先,我是否需要爲我的所有字段實施INotifyPropertyChanged
?我在Code-First的任何例子中都沒有看到這個,它似乎違背了目的,但也許我錯了。
我可以發佈一些示例代碼,如果你覺得ObservableCollection
應該接收變化通知,並且在我的實體類或其他東西必須是錯誤的。
編輯所以,只是可以肯定,如果我有一個在我的視圖模型下面的代碼
private ClientContext clientContext;
private Client client;
public Client Client
{
get { return client; }
set {
client = value;
NotifyOfPropertyChange(() => Client);
NotifyOfPropertyChange(() => Clients);
}
}
public ObservableCollection<Client> Clients { get { return clientContext.Clients.Local; }}
讓我們假設我的視圖都有的ItemsSource一個列表框設置爲客戶機和的SelectedItem設置爲Client 。我仍然需要在我的模型中實現INotifyPropertyChanged,儘管我在ViewModel中使用它。
如果客戶端對象本身在ViewModel中發生了更改(對象引用的更改),但是例如客戶端的「名稱」或「城市」發生更改,則只會得到更改通知。爲此,您必須在客戶模型類的每個屬性上實施更改通知。 – Slauma