我正在从数据库加载注释以将它们绑定到WPF控件,如:
this.DBContext.Notes.Where(n => n.ID == selectedNote.ID).Load();
this.notesBox.DataContext = this.DBContext.Notes.Local;
如果我想从本地视图中删除项目...
this.DBContext.Local.Notes.Remove(selectedNote);
this.notesBox.DataContext = this.DBContext.Notes.Local;
...它不再显示在notesBox中,但是如果我再次选择该注释,我将无法再将其加载到本地视图中。
问题:鉴于.Load()将一组数据加载到本地视图中,从本地视图中卸载它们的正确方法是什么,以便我可以在以后重新加载它们?
(我假设如果我要运行DBContext.SaveChanges(),那么Local.Remove(实体)实际上会从数据库中删除该项,这就是我无法将其加载回来的原因
答案 0 :(得分:1)
你是正确的,从本地删除也会将它从DbSet中删除,因此它将从数据库中删除。
如果您想要修改一个不会导致数据库更改的集合,您应该从Notes查询创建一个新的可观察集合并绑定到它:
var collection = new ObservableCollection<Note>(this.DBContext.Notes.Where(n => n.ID == selectedNote.ID));
this.notesBox.DataContext = collection;
这样您就可以在不修改数据库的情况下删除/修改新集合。