在Linq To Sql中切换数据库

时间:2010-01-22 16:44:54

标签: c# sql-server database linq linq-to-sql

我们如何更改基于Linq的WebApp的基础数据库?

例如:

当我们发布我们的Web应用程序时,比如说要从生产中发布,如果使用ADO.NET, 它就像修改 web.config 中的连接字符串一样简单,指向正在使用的实时数据库。数据库几乎相同,其他数据存储..

使用LINQ时,我们如何更改unerLying数据库?

注意; 使用c#

感谢

3 个答案:

答案 0 :(得分:4)

你仍然可以做同样的事; DataContext(包括SqlMetal生成的)包括接受连接字符串的构造函数重载。只需从ConfigurationManager(或其他)中获取所需的字符串并将其传入。

实际上,如果您不介意直接攻击DBML,它确实支持直接从ConfigurationManager 读取;问题是IDE设计师讨厌这个问题,并且每次看到它时都会破坏它。这是一种耻辱(discussed here)。

答案 1 :(得分:1)

我强烈建议您在应用中使用连接字符串重载来实例化数据上下文。我创建了一个辅助组件:

public static class DCHelper
{
  public static MyDataContext Create()
  {
     return new MyDataContext(ConfigurationManager.ConnectionStrings["CS"].ConnectionString);
  }
}

这样,我只有一个地方可以改变实例化上下文的方式,或者我可以更改配置文件来切换数据库。或者,create方法可以采取一些输入来确定连接。

答案 2 :(得分:-1)

如果您只是想知道如何移动connection string to the Web.Config Rick Strahl在他的博客上有example

如果要更改为其他类型的数据库...您可以保存大多数(如果不是所有查询)。但是您需要更改提供者/存储库。 LINQ 2 SQL目前只支持MSSQL(这就是它的真正意义所在。)

如果您需要更多灵活性,请查看LINQ to Entities