当前位置:  开发笔记 > 编程语言 > 正文

数据库中的一些数据更改.如何触发一些C#代码在这些更改上做一些工作?

如何解决《数据库中的一些数据更改.如何触发一些C#代码在这些更改上做一些工作?》经验,为你挑选了0个好方法。

假设我有一些带有数据库的应用程序A. 现在我想添加另一个应用程序B,它应该跟踪应用程序A的数据库更改.应用程序B应该在数据发生变化时进行一些计算.两个应用程序之间没有直接通信.两者都只能看到数据库.

基本问题是:数据库中的某些数据发生了变化.如何触发一些C#代码在这些更改上做一些工作?


为了给出答案的一些刺激,我提到了一些我正在考虑的方法:

    使应用程序B轮询感兴趣的表中的更改.优点:简单的方法.缺点:流量很大,特别是涉及到许多表时.

    引入触发器,触发某些事件.当他们开火时,他们应该在"事件表"中写入一些条目.应用程序B只需要轮询"事件表".优势:减少流量.缺点:逻辑以触发器的形式放入数据库.(这不是触发器"邪恶"的问题.这是一个设计问题,这使它成为一个劣势.)

    摆脱轮询方法并使用SqlDependency类来获取更改通知.优势:(可能?)流量少于轮询方式.缺点:不是数据库独立的.(我知道ODP.NET中的OracleDependency,但其他数据库呢?)

什么方法更有利?也许我已经错过了上述方法中的一些主要(dis)优势?也许还有其他一些我没有想到的方法?


编辑1:数据库独立性是...让我们称之为"销售人员"的一个因素.我可以使用SqlDependency或OracleDependency.对于DB2或其他数据库,我可以回退到轮询方法.这只是成本和收益的问题,我想至少考虑一下,以便我可以讨论它.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有