我有2个具有相同结构的数据库,如何使用它们/将它们与Linq O / R连接?

时间:2012-04-25 16:40:51

标签: c# linq

我有两个数据库:   - 开发数据库(用于测试和开发)   - 生产数据库(由最新版本使用)

我可以使用VS2010设计器成功地将我的DEV数据库与Linq连接(拖放我感兴趣的表并生成其余的表)。这创建了一个dev.dbml,从中我可以实例化从DataContext派生的类,它为我提供了免费的强大类型的Linq容量,这将反映数据库中静态代码编写的变化。

我的程序是一个.exe,它接受一个字符串参数:" dev"或" prod"。我希望透明地使用" dev"或者" prod"数据库不失Linq强大的打字和自动生成功能。更重要的是,代码必须是数据库通用的。

  1. 也许一个解决方案是以某种方式使用dev.dbml中声明的设置,但是在数据源上引入了flexibilty。我知道这可能会导致" prod" (即表格中存在于" dev"不会出现在" prod")但我将负责复制" dev"结构到" prod"每次我发布。

  2. 我正在研究的另一个解决方案是为DataContext编写一个包装器,但这会迫使我将数据库中的实体手动复制到代码中......例如:http://andrewtokeley.net/archive/2008/07/06/mocking-linq-to-sql-datacontext.aspx

  3. 我看到的另一个解决方案是将dev.dbml和prod.dbml映射到各自的数据库,但是,如何提供通用代码的可能性呢?

  4. 你会如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

LINQ-to-SQL将其连接字符串存储在应用程序配置文件中,这是默认构造函数使用的文件。它应该提供一个构造函数,允许您传入自己的连接字符串。只需使用它将运行时的连接字符串传递给您想要连接的数据库。

当然,这确实要求您连接的任何数据库都具有与您设计的相同的表,列等。