WPF 从数据库实时更新

Posted

技术标签:

【中文标题】WPF 从数据库实时更新【英文标题】:WPF live Update from database 【发布时间】:2011-02-15 20:18:56 【问题描述】:

我正在构建一个多用户 WPF 应用程序(要求是桌面应用程序),数据库 SQL Server 2008。

有两种类型的用户。

第一种类型的用户将输入一条记录,该记录将存储在一个表中。

第二种类型的用户最初会看到一个包含表中记录的列表框。要求是必须实时更新列表框(即,如果第一个用户输入了新记录,则必须更新列表框)。

目前我还没有实现数据库功能。 我目前正在使用 ObservableCollection 并模拟这种情况。

我想知道实现这一目标的最佳方法。 我应该使用计时器并继续查询表格吗?有没有更有效的方法? 这甚至可能吗(我应该切换到 ASP.NET 吗?)?

如果您有任何建议和提示,我将不胜感激。

【问题讨论】:

【参考方案1】:

尝试使用SqlDependency,因为当查询结果在服务器上发生变化时(例如,来自其他用户或进程的 INSERT 或 UPDATE 的结果),它会在您的代码中引发事件 (OnChange)

在 CodeProject 上用于简单实时聊天应用程序的示例:

http://www.codeproject.com/KB/database/chatter.aspx

【讨论】:

+1 我们在一个非常相似的商业案例中使用它,它提供了 OP 需要的东西。简而言之,您指定一个SELECT 查询,只要该查询的结果集发生更改,SQL Server 就会触发通知。

以上是关于WPF 从数据库实时更新的主要内容,如果未能解决你的问题,请参考以下文章

从 ViewModel WPF 更新 XAML 中的 ComboBox ObservableCollection 绑定

立即从进程回调输出更新列表视图 C# WPF

WPF,从用户控件中更新主窗口中的状态栏

我可以从后面的 C# 代码更新 WPF 绑定的值吗?

将 WPF 从 .NET 4 更新到 4.5.2,DataGridTextColumn Visibility DataContext 引用损坏

如何重新加载 WPF 网格