2013-07-25 82 views
0

我正在寻找一种方法来更新我的firebird数据库。我尝试使用迁移:实体框架代码优先 - Firebird迁移:否MigrationSqlGenerator?

private void btnUpdateDb_Click(object sender, EventArgs e) 
    { 
     DbConnection userDBConnection = ClassBasicRepository.GetDBConnection(); 

     var configuration = new Configuration(); 
     configuration.TargetDatabase = new DbConnectionInfo(
      userDBConnection.ConnectionString, 
      "FirebirdSql.Data.FirebirdClient"); 

     DbMigrator migrator = new DbMigrator(configuration); 
     migrator.Update(); 
    } 

DbMigrationsConfiguration:

public sealed class Configuration : DbMigrationsConfiguration<BaseDbContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = false; 
     //SetSqlGenerator("FirebirdSql.Data.FirebirdClient", new FirebirdSql.Data.Entity.???); 
    } 

    protected override void Seed(BaseDbContext context) 
    { 
     MigrationsAssembly = Assembly.GetExecutingAssembly(); 
     MigrationsNamespace = "MyServices.Data.Migrations"; 
    } 
} 

“migrator.Update()” 给了我以下异常:

没有MigrationSqlGenerator发现提供商FirebirdSql.Data。 FirebirdClient”。使用目标迁移配置类中的SetSqlGenerator方法来注册其他SQL生成器。

我必须在配置中指定一个MigrationSQLGenerator。但我无法在FirebirdClient.dll中找到它。我发现的唯一解决方案是自己重写它: https://github.com/mrward/entityframework-sharpdevelop/blob/master/src/EntityFramework/Migrations/Sql/SqlCeMigrationSqlGenerator.cs

Firebird特定的MigrationSQLGenerator确实是必需的,不是为了启用迁移而提供的吗?

我的环境: 的EntityFramework 5.0.0 .NET 4.5 FirebirdClient 3.0.2.0

+0

嗯,似乎迁移不是由FirebirdClient.dll(尚)supportet。但是,替代方案是什么?普通SQL?请参阅:http://tracker.firebirdsql.org/browse/DNET-506 – Dust258

回答

1

迁移目前不支持。实际上,您可以使用迁移,但您必须生成脚本并将其更改为适合Firebird风格的SQL。

+0

您是否有一个此解决方法的示例以使迁移运行? –

+0

呵,这个答案已经两岁了。现在支持迁移(尽管尚未发布 - 可能在一周左右)。但你可以拥有它:https://github.com/cincuranet/FirebirdSql.Data.FirebirdClient/tree/migrations。 –