使用 Linq to SQL 在本地和远程之间切换“ConnectionStrings”

2024-01-21

首先,我所说的远程是指我们网络上的中央专用 SQL Server。我所说的本地是指本地 SQL Express 安装。

我的情况只是在家里。没有云服务、外部站点等。我的应用程序允许用户离线工作,但为了最大限度地减少流量和其他一些问题,我希望允许他们直接连接到中央服务器,无论何时可用,或者/或者当他们设置选择中央服务器的设置时。

设置非常简单。每个人的本地连接字符串都是这样的 -->

Data Source=.\SQLEXPRESS;Initial Catalog=MemberCenteredPlan;Integrated Security=True

和中央 SQL 连接字符串,如下所示 -->

Data Source=CentralSQL;Initial Catalog=MemberCenteredPlan;Integrated Security=True

另外,我的数据与 UI 位于单独的项目中,因此我很难弄清楚如何从 UI 层的数据层访问设置文件。

我应该向所有方法添加参数并向它们传递 IsOnline 变量吗?似乎重复,但如果我知道更好的方法,我一开始就不会发帖。

谢谢您的帮助!

这是一个非常相似的帖子 https://stackoverflow.com/questions/966123/linq-to-sql-best-way-to-switch-between-test-dev-db但我想知道当我想在运行时在本地数据库和远程数据库之间切换时,建议是否有所不同。


在这种情况下,我使用的一个选项是在 DataContext(在分部类中)上创建一个方法:

public static DataContext New
{
  get
  {
    var cs = IsConnected ? CentralConnectionString : LocalConnectionString;
    return new DataContext(cs);
  }
}

您可以根据需要增强自动切换的切换逻辑。然后要在代码中引用,只需使用如下格式:

var DB = DataContext.New;
var result = from a in DB.....

它将您的数据上下文创建逻辑保留在一个位置,如果它满足您的需求,我发现它可以简化各处的事情。

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

使用 Linq to SQL 在本地和远程之间切换“ConnectionStrings” 的相关文章

随机推荐