2

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

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

4

2 回答 2

3

既然你提到了 dbml,我就假设 LINQ2SQL。

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

然后使用接受连接字符串名称的DataContext() 构造函数来确定上下文指向哪个数据库。例如这里

编辑

我会建议一个辅助方法/工厂是这样的:

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))
    {
        ...
    }
于 2012-08-28T09:51:01.403 回答
0

您应该查看Microsoft Sync Framework。它自己说:

一个全面的同步平台,支持任何数据类型、任何数据存储、任何传输协议和任何网络拓扑,支持应用程序、服务和设备的协作和离线访问。

它已经准备好涵盖您的场景。

于 2012-08-28T09:54:44.580 回答