linq2db具有2个不同的数据库来迁移数据库

时间:2018-10-24 10:39:33

标签: c# sql-server firebird linq2db

我想使用C#中的linq2db将数据库从Firebird迁移到MSSQL。

我认为我可以使用Firebird的T4模型加载结构,然后创建表并将数据批量复制到MSSQL。

到目前为止很好,但是它将数据复制回Firebird而不是MSSQL

这是我的app.config:

<connectionStrings>
    <add name="Firebird__" connectionString="Data Source=localhost;Initial Catalog=MyDatabase;User Id=xxx;Password=yyy" providerName="Firebird" />
    <add name="MSSQL__" connectionString="Data Source=192.168.1.x,12345;Initial Catalog=myOtherDatabase;User Id=yyy;Password=xxx" providerName="MSSQL" />
  </connectionStrings>
  <system.data>
        <DbProviderFactories>
            <remove invariant="FirebirdSql.Data.FirebirdClient" />
            <add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".NET Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient" />
        </DbProviderFactories>
    </system.data></configuration>

然后在我的程序中,我正在使用此

using (var db = new FirebirdDB())
        {
        var employeeQuery =
              from m in db.employee
              orderby m.NAME
              select m;

            liste = employeeQuery.ToList();
        }
      //using (var db_MSSQL = new MSSQL())
        using (var db_MSSQL = new FirebirdDB("MSSQL__")) 
        {
            db_MSSQL.CreateTable<MSSQL_.MA_DATEN_NAME>();
            //db_MSSQL.BulkCopy(liste);

我在这里(How to use more than one SQLite databases using LinqToDB)阅读了最后一个using语句

总是相同的问题,程序使用firebird连接而不是mssql。 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

现在我找到了答案,谢谢阿里奥奇!

App.config

providerName 显然非常重要,我需要“ SqlServer.2012”

<connectionStrings>
<add name="Firebird__" connectionString="Data Source=localhost;Initial Catalog=MyDatabase;User Id=yy;Password=xx" providerName="Firebird" />
<add name="MSSQL__" connectionString="Data Source=192.168.1.x,12345;Initial Catalog=MyOtherDatabase;User Id=yy;Password=xx" providerName="SqlServer.2012" />
</connectionStrings>

在我的程序中:

这可以解决问题:您可以在连接设置中为连接使用参数“ name” 命名,如果您有多个...

using (var db_MSSQL = new MSSQL("MSSQL__"))
        {
            db_MSSQL.CreateTable<MSSQL_.MA_DATEN_NAME>();