我有两个数据库: - 开发数据库(用于测试和开发) - 生产数据库(由最新版本使用)
我可以使用VS2010设计器成功地将我的DEV数据库与Linq连接(拖放我感兴趣的表并生成其余的表)。这创建了一个dev.dbml,从中我可以实例化从DataContext派生的类,它为我提供了免费的强大类型的Linq容量,这将反映数据库中静态代码编写的变化。
我的程序是一个.exe,它接受一个字符串参数:" dev"或" prod"。我希望透明地使用" dev"或者" prod"数据库不失Linq强大的打字和自动生成功能。更重要的是,代码必须是数据库通用的。
也许一个解决方案是以某种方式使用dev.dbml中声明的设置,但是在数据源上引入了flexibilty。我知道这可能会导致" prod" (即表格中存在于" dev"不会出现在" prod")但我将负责复制" dev"结构到" prod"每次我发布。
我正在研究的另一个解决方案是为DataContext编写一个包装器,但这会迫使我将数据库中的实体手动复制到代码中......例如:http://andrewtokeley.net/archive/2008/07/06/mocking-linq-to-sql-datacontext.aspx
我看到的另一个解决方案是将dev.dbml和prod.dbml映射到各自的数据库,但是,如何提供通用代码的可能性呢?
你会如何解决这个问题?
答案 0 :(得分:1)
LINQ-to-SQL将其连接字符串存储在应用程序配置文件中,这是默认构造函数使用的文件。它应该提供一个构造函数,允许您传入自己的连接字符串。只需使用它将运行时的连接字符串传递给您想要连接的数据库。
当然,这确实要求您连接的任何数据库都具有与您设计的相同的表,列等。