我想使用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。 有什么想法吗?
答案 0 :(得分:2)
现在我找到了答案,谢谢阿里奥奇!
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>();