首先,我所说的远程是指我们网络上的中央专用 SQL Server。我所说的本地是指本地 SQL Express 安装。
我的情况只是在家里。没有云服务、外部站点等。我的应用程序允许用户离线工作,但为了最大限度地减少流量和其他一些问题,我希望允许他们直接连接到中央服务器,无论何时可用,或者/或者当他们设置选择中央服务器时。
设置非常简单。每个人的本地连接字符串都是这样的 -->
数据源=.\SQLEXPRESS;初始目录=MemberCenteredPlan;集成安全性=True
和中央 SQL 连接字符串,如下所示 -->
数据源=CentralSQL;初始目录=MemberCenteredPlan;集成安全性=True
此外,我的数据与 UI 位于单独的项目中,因此我很难弄清楚如何从 UI 层的数据层访问设置文件。
我应该向所有方法添加参数并向它们传递 IsOnline 变量吗?似乎重复,但如果我知道更好的方法,我一开始就不会发帖。
感谢您的帮助!
This is a very similar post但我想知道当我想在运行时在本地数据库和远程数据库之间切换时,建议是否有所不同。
最佳答案
在这种情况下,我使用的一个选项是在 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.....
它将您的数据上下文创建逻辑保留在一个位置,如果它满足您的需求,我发现它可以简化各处的事情。
关于c# - 使用 Linq to SQL 在本地和远程之间切换 `ConnectionStrings`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2379470/