【发布时间】:2012-04-25 16:40:51
【问题描述】:
我有两个数据库: - 一个开发数据库(用于测试和开发) - 生产数据库(最新版本使用)
我可以使用 VS2010 设计器成功地将我的 DEV 数据库连接到 Linq(拖放我感兴趣的表,其余的会生成)。这为我创建了一个 dev.dbml,然后我可以实例化派生自 DataContext 的类,它免费为我提供漂亮的强类型 Linq 容量,这将反映数据库中用于静态代码编写的变化。
我的程序是一个 .exe,它带有一个字符串参数:“dev”或“prod”。分别地,我想透明地使用“dev”或“prod”数据库,而不会失去 Linq 的强类型和自动生成优势。更重要的是,代码必须是数据库通用的。
也许一种解决方案是以某种方式使用 dev.dbml 中声明的设置,但在数据源上引入灵活性。我知道这可能会在“prod”中引入失败(即“dev”中存在的表不在“prod”中)但我会在每次发布时将“dev”结构复制到“prod” .
我正在研究的另一个解决方案是为 DataContext 编写一个包装器,但这会迫使我手动将数据库中的实体复制到代码中...示例:http://andrewtokeley.net/archive/2008/07/06/mocking-linq-to-sql-datacontext.aspx
我会看到的另一个解决方案是将 dev.dbml 和 prod.dbml 映射到各自的数据库,但是,如何提供通用代码的可能性?
你会如何解决这个问题?
【问题讨论】:
-
您不想为此使用连接字符串吗?和一个数据模型?