0

我正在从数据库加载注释以将它们绑定到 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() 将一组数据加载到本地视图中,从本地视图中卸载它们的正确方法是什么,以便稍后我可以重新加载它们?

(我假设 Local.Remove(entity) 如果我要运行 DBContext.SaveChanges() 实际上会从数据库中删除该项目,这就是我无法重新加载它的原因)

4

1 回答 1

1

您是正确的,从本地删除也会将其从 DbSet 中删除,因此将从数据库中删除。

如果您想修改一个不会导致数据库更改的集合,您应该从 Notes 查询中创建一个新的可观察集合并绑定到它:

var collection = new ObservableCollection<Note>(this.DBContext.Notes.Where(n => n.ID == selectedNote.ID)); 
this.notesBox.DataContext = collection;

这样,您可以在不修改数据库的情况下删除/修改新集合。

于 2012-09-30T02:47:31.447 回答