2

我正在使用 EF 连接到我的数据库。我有一个DbContext用来获取DbSet<MyDataModel>. 我使用 anObservableCollection<MyDataModel>将数据绑定到GridViewWPF 中的 a 。这就是我填充集合的方式:

ObservableCollection<MyDataModel> myCollection = new ObservableCollection<MyDataModel>(dataContect.MyDataModels);

问题是我的数据库是从另一个来源(完全是另一个应用程序)更新的,ObservableCollection并且没有检测到何时将项目添加到数据库中。我不知道它会怎样,但我不知道我怎么能做到?该数据库包含很多条目(> 10k),所以我不希望定期重新加载所有条目。

我能做些什么?

编辑: 我想我有点不清楚(并且不确定如何ObservableCollections工作),但是,是的,我现在意识到我的主要问题是如何DbContext在数据库更新时刷新。和它本身并没有太大的关系ObservableCollection

4

3 回答 3

2

添加项目时,可观察集合会通知您的 UI。如果您绑定到它,您的界面将正确更新。

您仍然需要将项目添加到您的 Observable 集合中才能触发此行为。所以你仍然需要刷新你的 DataContext。

查看本文以强制从 SQL 服务器刷新

于 2013-01-28T10:44:23.457 回答
2

似乎根本问题是您需要知道您的应用程序需要知道的某些事情发生了变化。

如果您对第二个应用程序有任何控制权,那么您可以从中发布一条消息,让您的应用程序知道它需要重新加载(或者甚至它可以自己发布更改)。

如果您无法控制其他应用程序,则需要自己检测这些。您可以使用类似的东西SqlDependency,尽管这不适合客户端应用程序。您需要一个中央服务来执行监控,然后发布更改通知。

我当然可能完全错了,并且 EF 中可能内置了一些东西来通知更改。

于 2013-01-28T10:48:16.537 回答
1

顾名思义,可观察集合是可观察的,但它不观察任何东西。它的主要用途是在有人添加/删除项目时发出通知,因此您可以使用它来让 UI 自动反映集合中的更改。

于 2013-01-28T10:32:03.480 回答