【问题标题】:I have 3 databases, live, test and dev. Could I easily swap the links between these in a DBML?我有 3 个数据库,实时、测试和开发。我可以在 DBML 中轻松交换这些之间的链接吗?
【发布时间】:2012-04-05 01:37:35
【问题描述】:

我需要在相同设计的不同数据库实例之间进行交换。有没有办法将 DBML 重新指向这个不同的数据库。理想的做法是在代码中指定不同的 web.config 连接字符串。但是,不想更改代码库中的 Datacontext 名称。如果在 ADO.NET 中执行此操作,则可以选择连接字符串。

谢谢,

埃德

【问题讨论】:

    标签: asp.net sql ado.net linq-to-xml


    【解决方案1】:

    当您实例化 DBML 时,将从配置文件中检索适当的连接字符串。 (app.configweb.config)。在未找到设置的情况下,使用初始连接字符串(作为属性存在于 DBML 中,可以通过设计器查看)。

    如果您通过单个实例使用多个连接字符串,则只需要使用连接字符串构造函数,并且需要指定您应该连接到的数据库。

    在您的情况下,您只需在执行的设置文件中包含适当的连接字符串。连接字符串必须正确命名 - 请参阅放置在包含 DBML 的项目中的设置以检查名称。

    【讨论】:

    • 谢谢。 “如果您通过单个实例使用多个连接字符串,则只需要使用连接字符串构造函数,并且需要指定您应该连接的数据库。”可能总是正确的,因为人们可能不想更改 C# 代码以使用其他 DataContext 或者可能会?也许可以设置一个实时、测试和开发数据上下文,然后通过一些配置设置链接到适当的上下文????这里有 2 个选项:3 个具有唯一连接字符串的数据上下文或 1 个具有可互换连接字符串的数据上下文。最好的方法??谢谢,埃德
    • @EdB 您需要一个从配置文件中检索命名连接字符串的 DataContext。但是您需要 三个 配置文件。不需要在 C# 代码中切换配置设置(例如目标数据库)。如果您重新阅读我的答案,您会看到我建议您在配置文件中指定连接字符串,并暗示您为每个环境使用一个配置文件。
    • 谢谢,非常感谢您的帮助。
    【解决方案2】:

    您可以使用 web.config 转换并轻松交换所需的配置,这里有一些链接:

    Common Web.Config transformations with Visual Studio 2010

    Web.config Transformation Syntax for Web Application Project Deployment

    【讨论】:

      【解决方案3】:

      你应该能够做到这一点。当您生成 DBML 时,它通常会将连接字符串写入配置文件(web.config 或 app.config)。我们应该只更改配置文件中的数据库位置。但是,您必须确保所有数据库都处于同步状态。

      【讨论】:

      • 谢谢大家,我也从“Ronny”那里看到了这个:是的,这是可能的。 MYDataContext mycontext = new MYDataContext("你的连接字符串");有一个构造函数,您可以在其中更改连接字符串。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 2012-05-29
      • 1970-01-01
      相关资源
      最近更新 更多