【问题标题】:How to keep a global DataContext object updated in different running instances of the application?如何在应用程序的不同运行实例中保持全局 DataContext 对象的更新?
【发布时间】:2010-11-17 11:01:32
【问题描述】:

我正在为我的整个应用程序使用单个全局 DataContext 对象。应用程序应在其多个实例与共享 SQL 数据库同时工作的网络环境中工作。

在我调用 DataContext.Refresh 方法之前,一个应用程序中的数据库更改不会反映在其他实例中。问题是这个函数很耗时,我无法将代码改回使用不同的数据上下文对象进行不同的操作。

我应该怎么做才能始终保持每个应用程序中的 datacontext 对象更新?

【问题讨论】:

  • 这是什么类型的应用程序? web/wpf/winforms(或全部?)。无论哪种方式,全球 DC 都是一件疯狂的事情。
  • 最可怕的说法是“应用程序应该在网络环境中工作”。是的,祝你好运。愿上帝怜悯你的灵魂。
  • @RPM1984:一个 Web 应用程序和几个 Windows 应用程序。
  • 大声笑,感谢大家的支持。看来我必须经历一些漫长的重新编码和调试。
  • 呵呵,好吧,我不知道如何在这里帮助你——因为我从来没有实现过这个场景。我的数据库连接一直要么包装在 using 语句中(延迟打开,提前关闭),要么通过 DI 容器根据 HTTP 请求进行实例化。执行这种“类似单例”的方法会导致巨大的锁定。

标签: c# linq linq-to-sql


【解决方案1】:

RefreshMode Enum 是正确的位。只是决定何时使用它并正确使用 DataContext 的问题。将 DataContext 视为一个工作单元,并在准备提交时标记刷新模式(如 KeepChanges 或其他东西)。通过这种方式,用户信息被推送(或在冲突时冒泡),并使用数据库中最新的内容自动更新。

我认为其他人都正确地指出了全局数据上下文的错误。如果您想更频繁地更新他们的显示,您要么必须设置刷新时间,要么给用户一个刷新按钮。我不知道还有其他方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多