使用中央数据库在多用户环境中更新实体框架数据

2023-11-24

让我解释一下标题。

我在应用程序中使用实体框架代码优先(测试应用程序)。 出于调试目的TestApp连接到 SQLExpress 数据库(中央数据库服务器)。

为了简单起见,数据库包含一张表“Products”,TestApp 在数据网格中显示数据库中的所有“Products”,并且 TestApp 可以添加/删除“Product”或修改 ProductName。

public class Product {
 public int ProductId { get; set; }
 public string ProductName { get; set; }
}

public DbSet<Product> Products { get; set; }

例如,我有 3 台安装并运行 TestApp 的电脑(我将它们称为 Client_X)。如果我通过 Client_1 添加新的“产品”,则这在 Client_2 和 Client_3 上的 TestApp 中不直接可见。只有当 Client_2 和 Client_3 再次获取所有数据(手动刷新)时,我才能看到新添加的记录。

我想知道的是: 如何通过 EF Code First 了解数据库的变化? 由于添加或删除了新项目,Client_2 和 Client_3 如何自动更新其数据网格?

我不确定是否要求太多,但一个简单的示例项目或简单的代码来演示这一点将会很有用。

供参考: 我对 EF Code First 还很陌生。 (我正在使用 .NET 4.0 和 EF Code First 4.3.1)

提前致谢。

Scheme:

Client_3<
         \
          \
           \
            \
             \>
Client_1 <---> [Central Database] <----> Client_2

更新/编辑:

好的,很明显实体框架本身不会在多个客户端之间进行任何同步。

所以我会问另一个问题:我正在考虑以客户端-服务器方式工作:

  • 创建数据库并使用的单个服务器应用程序 首先是实体框架代码。
  • 与单个服务器通信的多个客户端 应用。

    现在确保客户端使用相同数据并看到彼此更新/更改的最佳方法是什么? (我希望有代码示例。)


您无法使用实体框架来通知客户端。您可以编写一个重载SaveChanges,或创建扩展方法,但就您没有客户端->服务器架构而言,我无法想象您如何实现这一点。

如果您使用 WCF 作为数据库的网关,则可以在客户端和服务器之间创建双工通信,并且当新记录可用时,将使用回调通道通知客户端。

另一种方法是使用 MS SQL Service Broker概述(服务代理)

尽管事实上,有很多不同的方法来获得所需的结果,但它们都与实体框架无关,因为它是 ORM,也不是使用 .NET 构建的应用程序的应用程序框架或通信框架。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用中央数据库在多用户环境中更新实体框架数据 的相关文章

随机推荐

  • .NET 中快速且紧凑的对象序列化

    我想使用对象序列化在网络之间进行通信Mono服务器和 Silverlight 客户端 序列化的空间效率和速度非常重要 因为服务器将托管多个实时游戏 我应该使用什么技术 BinaryFormatter 为本应用程序中不需要的序列化类 版本 区
  • 将新文件夹/文件推送到共享存储库时,Git 将创建模式设置为 100664

    我和我的同事有一个共享的网站存储库 我们都在使用 Windows 7 64 位并升级到 Ubuntu 10 04 以下是我们的设置 以防出现问题 本地 gt 中心 gt 网站 我们推送到集线器 这是一个裸存储库 然后使用集线器中的更新后挂钩
  • 每天在特定时间重复闹钟(闹钟管理器)

    您好 我希望我的应用程序每天在特定时间运行 为此 我使用下面的代码 但它只运行一次 这里有什么错误我怎样才能完成这个任务 AlarmManager alarmMgr0 AlarmManager getSystemService Contex
  • 不允许异步锁

    基本上 我想向 TCP 服务器发出多个异步请求 我目前有一个工作客户端 它只是同步的 并且会阻止每个网络调用的 UI 由于多个请求可能几乎同时发生 我尝试这样做 private object readonly readLock new ob
  • 如何正确让无模式表单出现在任务栏中

    我正在努力实现古老的 Delphi 梦想 即在任务栏中显示无模式窗体 是什么correct如何让无模式窗体出现在任务栏中 研究工作 这些是我为解决问题所做的尝试 要让它发挥作用需要很多东西正确地 仅仅在任务栏上显示一个按钮并不是解决方案 我
  • 如何打印状态栏和百分比?

    要实现如下状态栏 45 60 100 我希望将其打印到标准输出 并不断刷新它 而不是打印到另一行 这个怎么做 The r 字符 回车 将光标重置到行的开头 并允许您覆盖该行之前的内容 from time import sleep impor
  • 使用 OpenCV 计算黑色像素

    我工作于opencv 2 4 0 and C 我正在尝试做一个练习 要求我加载 RGB 图像 将其转换为灰度并保存新图像 下一步是将灰度图像转换为二值图像并存储该图像 我的工作就这么多 我的问题是计算二进制图像中黑色像素的数量 到目前为止
  • .rodata 部分加载到可执行页面中

    所以出于好奇 我今天尝试运行这段代码 用gcc m32 1 c int main void EB is the opcode for jmp rel 8 FE is hex for 2 So this is essentially an i
  • 查找枚举值中设置的最高标志

    我使用带有 flags 属性的枚举作为跟踪状态的方式 示例如下 Created 1 Completed 2 Dispatched 4 在不写任何过于严格的内容的情况下 如果检查这个 则执行那个 如果检查那个 则执行此操作 我希望能够找到已设
  • 使用 C# 以编程方式打开超级按钮栏、电源栏和开始菜单

    如何以编程方式打开 魅力酒吧 电源选项 开始菜单 在 Windows 8 中 我希望能够从我的 C 应用程序中打开它们 找不到我需要的文档 Thanks 我敢打赌发送 Windows 密钥 以及其他密钥 根据需要 就足够了 这是关于如何通过
  • 如何更改默认 LLDB 设置

    有时我需要使用 LLDB 打印长字符串 默认 LLDB 设置会修剪打印的字符串 我必须输入以下内容 set set target max string summary length 10000 下次运行时 此设置不会保留 有没有办法设置它以
  • Tinymce html5占位符通过从textarea读取属性

    对于标准文本区域我使用这个plugin创建一个占位符 我如何扩展tinymce 以便它也以这种方式工作 例如 默认值是从 textarea 属性中读取的 然后在用户聚焦于 iframe 时清除 与 CKEditor 类似 http alfo
  • 传递的数组会丢失除第一个元素之外的所有元素

    我有一个奇怪的问题 我最近将我的应用程序从本地 xampp 安装迁移到 SUSE Enterprise Server 11 一切正常 但这一件事让我发疯 我找不到解决方案 使用以下语法通过 GET 或 POST 传递数组时 search d
  • 单引号字符串字符串插值

    我正在尝试使用 Rails 在 ActionMailer 中设置电子邮件地址 在硬编码之前 但我们现在希望将它们设为 ENV 变量 这样我们就不需要每次电子邮件更改时都修改代码 目前的定义方式如下 from Name of Person l
  • cmake:读取并编译动态生成的 cpp 文件列表

    我有一个自定义工具 可以处理给定的 IDL 文件列表并生成许多 cpp 和 h 文件作为输出 我想将这些文件添加到要在我的 CMakeLists 中编译的内容列表中 并对这些文件对 IDL 的依赖关系进行建模 为了简单起见 我将声明对任何
  • 在 JSP 中启用 JavaServerPages 标准标记库 (JSTL)

    我觉得我错过了一些东西 从表面上看 JSP 开箱即用 支持标签 如这个问题的答案显示 这个人问了一个纯 jsp 问题并得到了涉及标签的答案 但是如果我尝试运行给定的代码
  • 如何在角度材料日期选择器上添加蒙版

    我最近开始使用角度材料来构建角度形式 其中我需要使用角度材料日期选择器 但无法在输入元素上添加任何掩码 我希望用户只能输入数字并在输入时将其格式化为日期格式 MM DD YYYY html div class example contain
  • 从文本文件中删除空行[重复]

    这个问题在这里已经有答案了 我有一个文本文件 其中有一些空行 意思是上面没有任何东西并且只是占用空间的线条 它看起来像这样 The quick brown fox jumped over the lazy dog 我需要它看起来像这样 Th
  • C++ 如何避免浮点运算错误[重复]

    这个问题在这里已经有答案了 我正在编写一个以浮点数递增的循环 但我遇到了以下示例所示的浮点算术问题 for float value 2 0 value lt 2 0 value 0 2 std cout lt lt value lt lt
  • 使用中央数据库在多用户环境中更新实体框架数据

    让我解释一下标题 我在应用程序中使用实体框架代码优先 测试应用程序 出于调试目的TestApp连接到 SQLExpress 数据库 中央数据库服务器 为了简单起见 数据库包含一张表 Products TestApp 在数据网格中显示数据库中