2

我正在使用 EF 代码优先模型开发 asp.net mvc。我正在尝试首先将使用 EF 代码的迁移应用到我的项目中。我正在使用 MySql 数据库。目前我正在使用 EF 4.3.1 版本和 6.6.4.0 版本的 mysql connector/.net。我成功地将迁移添加到我的项目中,这意味着我执行了一系列对我来说没有错误的命令。我已经按照这些步骤,

PM> Enable-Migrations

PM> Add-Migration InitialMigration

PM> update-database -verbose

这些步骤为我的项目创建 Migration 文件夹,并在 Migration 文件夹中创建配置和 timestamp_Initialmigration 文件,在配置文件中我添加了以下代码。

SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());

之后,我在课堂上添加了一个字段,例如,

public int newprop{get; set;}

之后我在 PM 控制台中执行 update-database -verbose 命令。

当我执行我的应用程序时,它会抛出一个错误,例如,

“‘字段列表’中的未知列‘Extent1.newprop’”

请指导我为什么会收到此错误我是否走错路了请指导我。

4

2 回答 2

1

如果您不使用自动迁移

Database.SetInitializer(new MigrateDatabaseToLatestVersion());

 public class MyMigrationConfiguration : DbMigrationsConfiguration<MyDbContext>
    {
        public MyMigrationConfiguration()
        {
            AutomaticMigrationsEnabled = true; // Are you using this ?????
            AutomaticMigrationDataLossAllowed = true;
        }
    }

然后,您需要使用 PM Commandlet 告诉 EF 添加另一个迁移并更新数据库。

PM> Enable-Migrations  //already done this ?
PM> Add-Migration myLabel
PM> Update-Database

在网络上搜索“基于代码的迁移”以获取帮助

于 2012-12-17T11:36:20.877 回答
0

回答 OP 有点晚了...但是由于它是我在谷歌上的第一次点击,所以我还是继续吧:)

这里的问题是,与 MSSQL 相比,MySQL 存在许多限制。* 特别是在区分大小写的文件系统(Linux 主机)上使用 mysql,表名可能不包含大写字母。* 键也被限制为 767 字节并且应该/必须是整数类型。* 那么Mysql.Data包的部分迁移生成器有问题。例如,重命名时,'dbo' 不会被删除。

在 insidemysql.com 上查看本指南。它描述了如何重新配置​​ Aspnet.Identity 堆栈以intTKey类型转换中使用。

我有一个项目,我也连接到 HistoryContext,允许更改 __MigrationHistory 的结构。它重命名表/列并调整其大小。还有对 IdentityConfig 的重制 - 所以看看

  1. https://github.com/mschr/ASP.NET-MVC5.MySql-Extended-Bootstrap/tree/master/my.ns.entities/DbContexts/MigrationConfig
  2. https://github.com/mschr/ASP.NET-MVC5.MySql-Extended-Bootstrap/tree/master/my.ns.entities/IdentityConfig

然后将它与您的上下文挂钩(请参阅IdentityDbContextMySqlMigrationScriptGenerator )并HistoryContextFactory在您的 Migrations.Configuration 类中启用提到的和(请参阅我的IdentitiyMigrations.Configuration

于 2016-10-29T03:28:12.407 回答