EF 6和ObservableCollection之间的奇怪行为

时间:2015-08-28 19:25:44

标签: wpf entity-framework mvvm

我在EF 6和我的WPF ViewModel之间有一种行为,我不明白:

我的ViewModel有一个ObservableCollection协议。在ViewModel的构造函数中,我调用

Protocols = new ObservableCollection<ProtocolType>(dal.GetAllProtocols());

dal是DataAccessLayer的ProtoColTypeRepository。

我在View中有一个DataGrid,它被绑定到Protocols。如果DataGrid添加了一个新项(CanUserAddRows = true),ProtoColTypeRepository会引起注意,所以我不需要调用dal.Insert()。更新也被注意到了。

如果我按下DEL-Key从DataGrid中删除一个项目,那么 ProtoColTypeRepository没有注意到它。此时我必须自己调用dal.Delete()。

我的ProtoColTypeRepository如何以及为何自动插入和更新?

我希望我必须手动调用dal.Insert()和dal.Update(),因为ObservableCollection用于View和DataAccess的ProtoColTypeRepository ......

如果我从MainViewModel调用另一个窗口,就会发生另一个奇怪的事情,就是说LanguageViewModel。我有相同的构造函数调用:

Languages = new ObservableCollection<ProtocolType>(dal.GetAllLanguages());

以及绑定到Languages的视图中的DataGrid。但在这种情况下,我必须通过调用dal.Insert(),dal.Update()等手动同步我的DataAccess。

我真的很想知道为什么我没有进一步写的行为,因为它的工作方式相同......

我使用VS2010

我希望你能解释一下这件事。

提前致谢

0 个答案:

没有答案