我试图在MySql服务器上设置一个asp.net mvc5 ef6项目。。我已经设置好了,我只需要更改HistoryRow键的长度,因为它超过767字节。。
我试过我的“身份模型”:

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));

我好像无法设置密钥长度。

最佳答案

您需要将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

关于mysql - HistoryRow没有 key ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30508394/

10-12 19:46