【问题标题】:How can I switch between two tableAdapters for SQL database如何在 SQL 数据库的两个 tableAdapter 之间切换
【发布时间】:2020-06-26 12:09:35
【问题描述】:

我有两个相同的数据库,一个在本地服务器上,另一个在云端。两个连接字符串都存储在 app.config 中。 对于这两个数据库,我在visualstudio中创建了一个数据集及其适配器。 客户端应该能够在运行时通过参数选择他应该使用哪个 tableAdapter。 我想处理同一类中两个数据库的数据(相同的结构和数据) 因此我需要在Test.TestSetTableAdapterTest.TestSet1TableAdpater 之间切换。 此外对象TestSet DataSet1也应该匹配所需的类型。

如何在运行时更改对这些适配器命名空间的引用? 或者有没有更好的方法来处理这个问题?

例如:

namespace Test.TestSetTableAdapter
{
    partial class valueTableAdapter
    {
       ...
    }
}

namespace Test.TestSet1TableAdapter
{
    partial class valueTableAdapter
    {
       ...
    }
}

namespace Test
{
    class database
    {
        private static TestSet DataSet1;
        
        public Test() 
        {
            DataSet1 = new DataSet1();
        }
        public string[,] getValues()
        {
            TestSetTableAdapter.valueTableAdapter value = new TestSetTableAdapter.valueTableAdapter();
            value.FillBy(DataSet1.value);
        }
    }
}

【问题讨论】:

  • 适配器来自一个连接。因此,一个应用程序可以有多个连接,并且每个适配器都与一个连接相关联。
  • 我认为你的问题不清楚。你能告诉我这两个tableadapter有什么区别吗?或者关于参数选择表适配器的依赖是什么?
  • 感谢您的回答。 tableadpaters 从两个不同的数据库中检索相同的数据。因此它们的名称和连接字符串不同。但是,我找到了在运行时更改适配器类型的解决方案。我将变量定义为动态的,并决定在运行时使用哪个适配器。

标签: c# sql visual-studio


【解决方案1】:

如果数据库模式相同,则不需要不同的数据集;只需在设计器中创建一个 DataSet。您可以更改 tableadapter 使用的连接字符串

  • (可能)在 DataSet 设计器中单击 TableAdapter 并将 ConnectionModifier 设置为 public(如果默认设置对您不利,因为 TA 代码与使用它的代码位于不同的程序集中)
  • 更改与myTableAdapterX.Connection.ConnectionString = ... 的连接

这样,您可以将一个或多个 DataSet 实例和一个或多个 tableadapter 连接到不同的 DB

如果您将数据从一个数据库复制到另一个数据库,您可以拥有一个 DataSet 实例和一个 tableadapter,并使用不同的连接字符串切换连接字符串或一个 DataSet 实例和两个 TA 实例。

如果您同时使用两个不同的数据库,您可能会有两个 DataSet 实例(以保持数据分开)和一个 TA(并始终切换其字符串)或两个 TA(具有不同的连接字符串)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多