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

本文关键字:何使用 接口 Linq 数据库 结构 我有 | 更新日期: 2023-09-27 18:32:25

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

我可以使用 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映射到它们各自的数据库,但是,如何提供通用代码的可能性?

你会如何解决这个问题?

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

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

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