【发布时间】:2015-02-13 15:21:43
【问题描述】:
我正在编写一个软件,它将充当一些仓库管理软件和自动车辆硬件之间的中间人。我的程序有一个位于服务器上的数据库实体模型。
我们使用的车辆硬件带有一些允许它读取和写入数据库的软件。
我想在我的实体模型中设置在特定字段更新时触发的事件。
例如:车辆可能会遇到错误,然后它将一些值写入数据库中的表。然后我的程序需要识别这种变化并通知 WM 软件。
此解决方案需要事件驱动,因为我不能牺牲 CPU 来不断轮询数据库以进行更改
通过覆盖实体的 SaveChanges() 方法,我已经看到了许多解决方案,但是在我看来,只有当更改来自应用程序本身而不是来自外部源时才会起作用。
这可能吗? EF 有这个内置的,我只是没有看到它?
当物理 DB 更新时,EF 会调用 saveChanges() 吗?
非常感谢
【问题讨论】:
-
我不确定这样的事情是否可能发生。将一些代码直接添加到您的数据库中可能是合理的:msdn.microsoft.com/en-us/library/ms254498(v=vs.110).aspx。此代码可以使用一些系统事件、.net 远程处理或其他东西来将“事件”传递给您的软件。据我所知,SQL Server 支持通知,但仅适用于 DDL。
-
我的软件是一个dll...
-
如果你可以从数据库触发器调用你的 DLL - 你有解决方案。我说的对吗?
-
SQL Server Broker 和 .net 的 SqlDependancy 类将为您提供帮助。
标签: c# events .net-4.5 entity-framework-6