HistoryRow没有关键

时间:2015-05-28 13:45:40

标签: mysql asp.net asp.net-mvc-5 entity-framework-6

我正在尝试在MySql服务器上设置一个asp.net mvc5 ef6项目。我已经完成了所有设置,我只需要更改HistoryRow键的长度,因为它超过767字节。 我试过我的“IdentityModels”:

modelBuilder.Entity<HistoryRow>().Property(h => h.MigrationId).IsMaxLength().HasMaxLength(100).IsRequired();
        modelBuilder.Entity<HistoryRow>().Property(h => h.ContextKey).HasMaxLength(200).IsRequired();

在我的“配置”中:

            SetHistoryContextFactory("MySql.Data.MySqlClient", (conn, schema) => new MySqlHistoryContext(conn, schema));

我似乎无法设置密钥长度。

1 个答案:

答案 0 :(得分:1)

您需要将modelBuilder调用添加到MySqlHistoryContext类的OnCreating方法,而不是ApplicationDbContext类。

例如:

public class MySqlHistoryContext : HistoryContext
{
    public MySqlHistoryContext(
      DbConnection existingConnection,
      string defaultSchema)
    : base(existingConnection, defaultSchema)
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<HistoryRow>().Property(h => h.MigrationId).HasMaxLength(100).IsRequired();
        modelBuilder.Entity<HistoryRow>().Property(h => h.ContextKey).HasMaxLength(200).IsRequired();
    }
}

此更改允许我在包管理器中执行以下命令:

PM> add-migration "Initial" -Force
PM> update-database -Verbose