MySql数据库中的实体框架代码优先迁移

我使用实体框架创建代码第一个模型,并在安装第一个版本到客户端后,我们发现数据库的列有一些变化,我使用Entity Framework的迁移,并且您应用所有迁移步骤蝙蝠客户端的数据库不存在行迁移历史记录最后更改并在执行时显示此消息

Table 'nameTable' already exists

要么

Additional information: Duplicate column name 'Reference'

这个类的配置代码

 internal sealed class Configuration : DbMigrationsConfiguration<GSM.DataAccess.GSMContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = false;
        SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());  
    }

    protected override void Seed(GSM.DataAccess.GSMContext context)
    {

    }
}

和这个类的第一次迁移的代码

public partial class AddMoreInformationColumn : DbMigration
{
    public override void Up()
    {

            AddColumn("dbo.People", "Reference", c => c.String(unicode: false));
            AddColumn("dbo.Products", "Reference", c => c.String(unicode: false));
            AddColumn("dbo.Products", "SalePrice", c => c.String(unicode: false));
            AddColumn("dbo.Products", "WholePrice", c => c.String(unicode: false));


    }

    public override void Down()
    {

            DropColumn("dbo.People", "Address");
            DropColumn("dbo.People", "Reference");
            DropColumn("dbo.Products", "Reference");
            DropColumn("dbo.Products", "SalePrice");
            DropColumn("dbo.Products", "WholePrice");

    }
}

至于目前的问题,它看起来像客户端迁移快照不同步。 您可以将Up()方法中冲突的代码注释掉,然后执行更新数据库以使其恢复同步。 如果您担心缺少更改,则需要使用架构比较工具(http://www.techbubbles.com/sql-server/schema-compare-for-sql-server-in-visual-studio-2013/) )。

我会重新考虑更新客户端(PRODUCTION)数据库的策略。 我们所做的是从我们的迁移中生成一个脚本,该脚本在客户端网站上运行以更新它们。 请参阅:http://cpratt.co/migrating-production-database-with-entity-framework-code-first/#at_pco=smlwn-1.0&at_si=54ad5c7b61c48943&at_ab=per-12&at_pos=0&at_tot=1

您还必须考虑数据库初始化程序的内容,并将其设置为null或migratetolatestversion进行部署。

链接地址: http://www.djcxy.com/p/90243.html

上一篇: Entity Framework Code First Migration in MySql DataBase

下一篇: C# Entity Framework Migration