C# LINQ到SQL—在测试和测试之间切换的最佳方式;开发数据库

C# LINQ到SQL—在测试和测试之间切换的最佳方式;开发数据库,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,使用LINQ to SQL ORM以编程方式在测试和开发数据库之间来回切换的最简单方法是什么?当新建DataContext时,其中一个重载采用连接字符串。因此,我会有一个类似以下内容的编译器开关: using (MyDataContext dc = new MyDataContext(connectionString) ) { //do a unit of work. } #if Debug string connectionString = .... #else string c

使用LINQ to SQL ORM以编程方式在测试和开发数据库之间来回切换的最简单方法是什么?

当新建DataContext时,其中一个重载采用连接字符串。因此,我会有一个类似以下内容的编译器开关:

using (MyDataContext dc = new MyDataContext(connectionString) )
{
  //do a unit of work.
}
 #if Debug
 string connectionString = ....
 #else
 string connectionString = ...
 #endif

 DbDataContext db = new DbDataContext(connectionString);

在web/app配置中使用连接字符串。为dev/test/prod进行多个配置。每个配置应具有适当的连接字符串。切换每个环境的配置。

我从来都不喜欢这种方法,似乎它会留下很大的错误空间。我已经将DEV设置为默认设置。这恰好发生在我的本地计算机上,无法从测试或产品中获得。如果应用程序的发布没有关闭配置,则应用程序会提前大声失败。+1这是正确的答案。您应该提到,您可以使用msbuild替换web.config节,以便ie在调试版本上获得DEV conn字符串,但在发布版本+1上获得PROD字符串。我在多个项目中使用过这种方法,从未遇到过问题。就我个人而言,我希望MS删除默认构造函数,并强制将连接字符串作为构造函数的显式参数。我同意这一意见,尽管我会将连接字符串完全移出代码并移入您的app/web.config或其他集中式配置源。您仍然可以。您的配置文件中可以有两个部分,当您在代码中分配连接字符串时,您可以根据是否处于调试状态获取正确的连接字符串?