【问题标题】:Switching Database in LinqToSql在 LinqToSql 中切换数据库
【发布时间】:2010-01-22 16:44:54
【问题描述】:

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

例如:

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

在使用 LINQ 时,我们如何更改错误的数据库?

注意;使用c#

谢谢

【问题讨论】:

  • web.config 中没有连接字符串吗?应该有一个属性 providerName="System.Data.SqlClient"
  • 有一个,但需要同时保留两个,用于直播和制作。发布产品时需要交换它们,而不是手动删除/编辑相同

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


【解决方案1】:

您应该仍然可以这样做; DataContext(包括 SqlMetal 生成的)包括接受连接字符串的构造函数重载。只需从ConfigurationManager(或其他)获取您想要的字符串并将其传入。

实际上,如果您不介意直接破解 DBML,它确实支持从 ConfigurationManager 直接读取 ;问题是 IDE 设计者讨厌这个,每次你看它都会破坏它。真可惜 (discussed here)。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      如果您想更改为不同类型的数据库...您可能可以保存大部分(如果不是所有查询)。但是您需要更改提供程序/存储库。 LINQ 2 SQL 目前只支持 MSSQL(这就是它真正要做的。)

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

      【讨论】:

      • 很确定 OP 询问的是更改连接字符串,而不是数据库类型
      • 数据库属于同一类型(SQL SERVER 2005),区别在于“生产数据库”和“实时数据库”
      • 是的,我在发布答案后看到了这一点。我在这一点上添加了一条注释。
      • 感谢您的回答,不胜感激
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 2012-03-26
      相关资源
      最近更新 更多