【问题标题】:Notify changes from generic database to WPF application [closed]通知从通用数据库到 WPF 应用程序的更改 [关闭]
【发布时间】:2014-11-26 07:57:19
【问题描述】:

如标题所示,我需要通知我的 C# WPF 应用程序数据库中的任何更改(另一个应用程序在一个表中添加数据)。

我正在使用实体框架和 Linq。 dbms 可以不同(SQL Server、Oracle、MySQL...)。

我读了很多关于这方面的内容,我也在这里问:有没有办法在使用轮询的情况下实现这个目标?

【问题讨论】:

  • 是的,你必须监听数据库事件。但这需要非常特定于 RDBMS 的配置和 C# 代码。这使得这个主题过于广泛。你可以开始here
  • SQL Server 2008 中有例如更改跟踪功能。您真的需要对任何表进行任何更改吗?您将如何处理它?现在这个问题实在是太宽泛了。
  • @GertArnold 您的链接仅适用于 SQL Server...我说适用于所有 dbms
  • @VDohnal 也为您的评论.. 我说过 dbms 可以是 rdbms 世界中的一切
  • 这就是为什么我在这里说开始

标签: c# wpf database linq entity-framework


【解决方案1】:

我希望以下链接可以帮助您,尤其是 SQL Server 的事件通知和 Sql server 的 CLR 对象(Redis 上的 cmets 等工具)的答案,但这可能仅限于一个或两个数据库: MsSQL callback function to asp.net website

对于Oracle数据库,ODP有类似的通知机制:

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/changenotification/ChangeNotification.htm

并且由于 SQL 和 Oracle 的 EF 提供程序不同,并且对其他数据库的支持非常少,您可以拥有托管服务等,监听更改通知并发布数据更改事件,以便订阅者可以采取适当的操作,例如刷新上下文或更新缓存等。

【讨论】:

  • 但您的链接是特定于 dbms 的......它是否存在“通用”的东西?
  • “通用”是一个棘手的现象 AFAIK :-) 这就是为什么我提到它适用于相当多的数据库,而且 EF 本身不像 NHibernate 等其他 ORM 在大多数数据库中并不通用
  • @PieroAlberto 但是您可以将服务回调方法作为一种模式,以便您使用的任何具有类似回调支持的数据库都可以调用服务来发布通知。
  • 好的,那么,我该如何使用 EF 支持的所有数据库呢?服务回调是什么意思?
  • @PieroAlberto 请更仔细地查看提供的链接,方法是您将托管 Web 服务并将该服务名称提供给数据库例程/proc,在该过程中进行数据修改将调用网络服务(这个过程我称之为“服务回调”)。我建议请看一下 Oracle ODP 链接,您可以对此了解更多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 2013-03-28
  • 2021-01-18
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
相关资源
最近更新 更多