我正在尝试在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));
我似乎无法设置密钥长度。
答案 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