【问题标题】:I have 2 databases that have the same structure, how to use them / interface them with Linq O/R?我有 2 个具有相同结构的数据库,如何使用它们/将它们与 Linq O/R 接口?
【发布时间】:2012-04-25 16:40:51
【问题描述】:

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

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

你会如何解决这个问题?

【问题讨论】:

  • 您不想为此使用连接字符串吗?和一个数据模型?

标签: c# linq


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-02
    • 2011-01-07
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2014-04-09
    相关资源
    最近更新 更多