0

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

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

我的程序是一个 .exe,它带有一个字符串参数:“dev”或“prod”。分别地,我想透明地使用“dev”或“prod”数据库,而不会失去 Linq 的强类型和自动生成优势。更重要的是,代码必须是数据库通用的。

  1. 也许一种解决方案是以某种方式使用 dev.dbml 中声明的设置,但在数据源上引入灵活性。我知道这可能会在“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 回答 1

1

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

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

于 2012-04-25T16:44:24.773 回答