linq2db с 2 различными базами данных для переноса базы данных - PullRequest
0 голосов
/ 24 октября 2018

Я хочу перенести базу данных из Firebird в MSSQL, используя linq2db в C #.

Я подумал, что могу загрузить структуру, используя модели T4 из Firebird, а затем создать таблицы и BulkCopy для данных в 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);

Я прочитал последний оператор using здесь ( Как использовать более одной базы данных SQLite с использованием LinqToDB )

всегда одна и та же проблема, программаиспользует соединение с firebird, а не mssql.есть идеи?

1 Ответ

0 голосов
/ 24 октября 2018

теперь я нашел ответ, спасибо Arioch!

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>

в моей программе:

это добилось цели: вы даете соединению имя с параметром "имя" в настройках вашего соединения, что имеет смысл, если у вас более одного ...

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