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

时间:2012-08-28 09:47:07

标签: c# database linq-to-sql

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

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

2 个答案:

答案 0 :(得分:3)

既然你已经提到过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))
    {
        ...
    }

答案 1 :(得分:0)

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

  

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

它已经准备好了所有的准备工作。