我希望标题不会太混乱。 这是我打算做的事情:
假设我在全国10个不同的网站中有10台个人服务器。 他们有一个数据库和前端桌面应用程序。
现在我有一个网站,我拥有SAME数据库结构/模型,就像10个服务器一样。我使用LINQ to SQL来设置查询,我将在执行查询之前更改DataContext的连接字符串。
所以基本上我在我的网络服务器上有数据库作为shell,如果你愿意,我可以根据web服务器数据库创建关系查询,并通过更改连接字符串将更新的信息发送回我喜欢的任何服务器的datacontext。
如前所述,数据库结构在各个数据库和Web服务器数据库中始终相同。我将使用我在代码中本地创建的DBML结构来更新数据并更改连接字符串。
有意义吗?只是想确认我是否遗漏了任何东西
答案 0 :(得分:1)
只需将所需的连接字符串(或连接)作为构造函数参数传递到数据上下文中,就可以在运行时执行此操作。您也可以在配置中配置它 - 通常在connectionStrings
部分,但它取决于DBML的配置方式。
答案 1 :(得分:0)
我们的情况很像。简化后,我们的web.config
文件包含以下条目:
<appSettings>
<add key="server1_ConnectionString" value="Data Source=myServerAddress;..."/>
然后在代码中,你可以:
use (var dc = new DbDataContext(ConfigurationManager.AppSettings[
System.Environment.MachineName.ToLower + "_ConnectingString"]))
{
....
代码根据运行的机器使用不同的连接字符串。
答案 2 :(得分:0)
我使用的解决方案是完全从web.config中删除连接字符串,并在包含您网站的IIS上下文中定义它。 通过使用类似命名空间的命名约定(如“YourAppName.ConnectionString”),可以避免多个应用程序之间的冲突。
这种方法的优点是多方面的......
为了采用这种方法,您需要警惕Visual Studio将连接字符串添加回web.config文件,并且在更改DBML之后,可能会更改其使用的默认连接字符串。在这两种情况下,只需使用您的版本控制系统来管理这些更改的回滚。
它可能不适合你,但我很高兴这样做。