我在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
我希望你能解释一下这件事。
提前致谢