实体框架代码首先与MySql服务器无法运行迁移

时间:2018-05-15 03:16:38

标签: c# mysql entity-framework ef-migrations

我已经设置了两个用于迁移的配置,一个用于SQL服务器,另一个用于MySql。现在没有使用SQL Server迁移。现在我的问题是当我用Update-Database -ConfigurationTypeName InTouchEnterprise.Data.Repository.MySqlMigrations.Configuration -verbose执行Sql Server迁移时。它给了我以下错误

  

验证主机' localhost'对于用户'测试'使用方法' mysql_native_password'消息失败:用户访问被拒绝'测试' localhost' (使用密码:否)

但如果我运行该项目,它会成功连接到数据库并正确地使用数据库执行所有操作。现在我很清楚可能出现的问题。

根据错误消息,它说我没有指定密码,但我在web.config中指定了密码。下面是我的连接字符串。

<add name="IdentityDB" providerName="MySql.Data.MySqlClient"
connectionString="server=localhost;port=3306;database=rtd;uid=test;password=*******" />

以下是Configuration class的代码:

internal sealed class Configuration : DbMigrationsConfiguration<InTouchEnterprise.Data.Repository.InTouchEnterpriseDbContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
        MigrationsDirectory = @"MySqlMigrations";

        //for mysql
        SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());
    }

    protected override void Seed(InTouchEnterprise.Data.Repository.InTouchEnterpriseDbContext context)
    {
    }
}

1 个答案:

答案 0 :(得分:2)

我不知道确切的问题但是当我在web.config中将连接字符串中的持久安全信息添加到true时,它又开始工作了。这是我更新的连接字符串。

<add name="IdentityDB" providerName="MySql.Data.MySqlClient" 
connectionString="server=localhost;port=3306;database=rtd;uid=root;password=*****;persistsecurityinfo=True" />