我试图在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/