我正在使用单个实例DbContext
方案在WPF应用程序中本地隐藏数据库的整个副本。我听说这是不好的做法,但我的数据库很小,在应用程序运行时我需要在本地完整拷贝它。实体框架4.1 DbSet重新加载
的IQueryable
扩展方法,Load()
让我预加载DbSet<>
的元素,让我可以绑定事情的DbSet<>
的本地属性。数据库中的数据变化很快,所以我想SaveChanges()
并重新加载的一切,甚至已经跟踪的对象。再次调用Load()
方法不会更新已被加载但被标记为未更改的项目。
在DbSet<>
中重装预装物品的首选方法是什么?关于我的头顶,我只能想到调用SaveChanges()
,然后遍历所有条目并将跟踪值和原始值都设置为数据库中的当前值,然后将Load()
设置为可能已添加的任何新对象。在我的场景中,不可能删除对象,但我可能必须在长期运行中支持项目删除。这看起来不正确,应该有办法放弃一切并重新加载。看起来,放弃我的上下文并重新开始更容易,但WPF中的所有元素都已绑定到Local´ObservableCollection<>
,这只会弄乱界面。
谢谢你的回复,虽然我有些失落,因为我已经读到,在我的情况下,我的选择恰恰相反。我会回顾这些话题,然后回来。 – Gleno 2011-04-27 19:42:52
我的关系没有变化,数据库中也没有删除。我将在今天晚些时候开始另一个问题,并试图解释为什么我不能有一个短暂的DbContext。我真的希望你能够接受一些有价值的投入。 – Gleno 2011-05-09 10:19:11