用于两个应用程序和公共数据库的实体框架

发布于 2024-11-10 04:29:26 字数 182 浏览 1 评论 0原文

我有两个使用实体框架的应用程序(Web 和桌面应用程序),它们使用通用的 SQL Server 数据库。它们实现了工作单元模式,并将上下文保留在会话或相关线程中。我的问题是当一个应用程序更新数据库上的某些内容时如何更新另一个应用程序的上下文? 举个例子,假设 Windows 服务已向表中添加了一些行。 Web 应用程序上下文如何在插入的同时获取它。

I have two applications(web and a desktop app) that uses entity framework which use a common sql server database. They have unit of work pattern implemented and it keeps the context in the session or in the relevant thread. My question is how to update context of another application when one application updates something on the database ?
As an example let say the windows service has added some row to a table. How can the web application context get that one at the same time it is inserted.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

古镇旧梦 2024-11-17 04:29:26

Web 应用程序场景中的上下文应该仅根据请求持续。从我看来,您必须从数据库级别将某些内容实现为事件,因为这似乎是常见的地方。这可以使用触发器来完成

。在您的场景中,您应该执行以下步骤(仅执行绘图板场景)

  • 在数据库级别为每个表添加触发器,这基本上会向应用程序层抛出一个事件。
  • 以某种方式将这些触发器提取到存储过程中,以便您可以与 EF 一起使用。
  • 此后,实现一个位于两个应用程序上的层,其主要职责是通知用户其他应用程序对数据库的更改,然后通过单击更新请求一个按钮(依次更新上下文)。基本上是数据库级别的触发器,在相应的 UI 上触发某些内容。

这项工作的重点在于第三点。您可以通过多种方式实现这一目标。替代方案是编写一个服务来轮询另一个服务(接受来自数据库触发器的警报)以检查修改。所以逻辑分离可以像 db -->接受变更通知的服务 -->轮询通知服务的服务 --> 以上在逻辑和理论上都是可行

的,但希望它对您有所帮助,我很想知道您是如何做到这一点的。

Context in scenario of a web application should only last per the request. From what I see, you have to implement something as an event from database level as that seems to be the common place. This can be done using Triggers

In your scenario, you should perform following steps (just doing a drawing board scenario)

  • Add triggers at database level for each table, which will basically throw an event to the application layer.
  • Somehow extract those triggers into stored procedures, so that you can use with EF
  • Thereafter, implement a layer that sits on both the application whose primary responsibility is to notify the user of a change in the database by other application and then update the request by clicking a button(which in turn update the context). Basically the database level trigger, triggers something on the respective UI.

The meat of the work lies in the third point. You can achieve it in many ways. Alternatives are writing a service that polls another service (which accepts alerts from db trigger) for checking the modifications. so the logical separation could be like db --> service that accepts the change notification --> service that polls the notification service --> application

Above works logically and theoretically but hope it helps you out and I would be keen to know how you go about doing this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文