c# - 如何在 C# 中使用具有相同表的两个数据库?

标签 c# database linq-to-sql

我正在编写一个程序并且我想要 2 个 SQL Server 数据库。一个在客户端,一个在服务器。我想检查我的程序中的互联网连接,如果用户连接到互联网,则使用服务器数据库,如果离线,则使用客户端数据库,然后当用户连接到互联网时,服务器数据库会自行更新客户数据库。

由于两个数据库完全相同并且具有相同的表,我该怎么做?我的意思是连接字符串和 dbml 文件内容。

最佳答案

既然您提到了 dbml,我就假设使用 LINQ2SQL。

我建议您添加 2 个连接字符串,一个用于客户端,一个用于服务器。

然后使用DataContext() constructor它使用连接字符串名称来确定上下文指向哪个数据库。例如here

编辑

我建议像这样的辅助方法/工厂:

public static MyDataClassesContext GetDataContext(bool isInternetAvailable)
{
  if (isInternetAvailable)
  {
    return new MyDataClassesContext("ServerConnStringName");
  }
  else
  {
    return new MyDataClassesContext("LocalConnStringName");
  }
}

在您的代码中使用 DataContexts:

    // Whatever your mechanism is for determining internet availability 
    // (Note that you probably want to cache this bool lol)
    bool isInternetAvailable = GetPingToServer() < 10000 ? true : false;
    using (var dc = GetDataContext(isInternetAvailable))
    {
        ...
    }

关于c# - 如何在 C# 中使用具有相同表的两个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12156687/

相关文章:

.net - Linq to Sql - 查找祖先的分层查询

LINQ 选择行 "max"版本

c# - 控制台应用问题

android - 使用 Realm 查询给定月份的数据

java - 如何在不使用 CAST 函数的情况下在连接级别以正确的格式 (CCSID 37) 转换 IBM DB2 十六进制数据

mysql - 如何从数据库中解析时间

c# - 表单编辑器自动将子控件添加到 WPF Integration ElementHost

c# - 如何为 Visual Studio 解决方案设置选项卡?

c# - 从 .net core 2.0 中动态加载的程序集调试代码

c# - 将 LinqDataSource 绑定(bind)到两个单独的表