Mysql Entity Framework 问题 - 指定的键太长;最大 key 长度为 3072 字节

标签 mysql entity-framework asp.net-core-mvc entity-framework-core asp.net-core-2.0

当我使用这个命令时:

$ dotnet ef database update

我收到这个错误:

Specified key was too long; max key length is 3072 bytes

导致这个错误的表是微软内置的用户管理表:

CREATE TABLE `AspNetUserLogins` 
(
    `LoginProvider` varchar(767) NOT NULL,
    `ProviderKey` varchar(767) NOT NULL,
    `ProviderDisplayName` text NULL,
    `UserId` varchar(767) NOT NULL,

    PRIMARY KEY (`LoginProvider`, `ProviderKey`),
    CONSTRAINT `FK_AspNetUserLogins_AspNetUsers_UserId` 
        FOREIGN KEY (`UserId`) REFERENCES `AspNetUsers` (`Id`) 
        ON DELETE CASCADE
);

我试图将此添加到 OnModelCreating:

modelBuilder.Entity<Utilisateurs>(entity => entity.Property(m => m.NormalizedEmail).HasMaxLength(200));
modelBuilder.Entity<Utilisateurs>(entity => entity.Property(m => m.NormalizedUserName).HasMaxLength(200));
modelBuilder.Entity<IdentityRole>(entity => entity.Property(m => m.NormalizedName).HasMaxLength(200));
modelBuilder.Entity<IdentityUserLogin<string>>(entity => entity.Property(m => m.UserId).HasMaxLength(200));
modelBuilder.Entity<IdentityUserRole<string>>(entity => entity.Property(m => m.UserId).HasMaxLength(200));
modelBuilder.Entity<IdentityUserRole<string>>(entity => entity.Property(m => m.RoleId).HasMaxLength(200));
modelBuilder.Entity<IdentityUserToken<string>>(entity => entity.Property(m => m.UserId).HasMaxLength(200));
modelBuilder.Entity<IdentityUserClaim<string>>(entity => entity.Property(m => m.UserId).HasMaxLength(200));
modelBuilder.Entity<IdentityRoleClaim<string>>(entity => entity.Property(m => m.RoleId).HasMaxLength(200));

但它不再起作用了。

谢谢你的帮助

** 编辑 **

我也试过:

modelBuilder.Entity<IdentityUserLogin<string>>(entity => entity.Property(m => m.LoginProvider).HasMaxLength(200));
modelBuilder.Entity<IdentityUserLogin<string>>(entity => entity.Property(m => m.ProviderKey).HasMaxLength(200));

最佳答案

我使用的是官方 MySql 提供程序 MySql.Data.EntityFrameworkCore,它处于预发布状态并且在迁移方面存在一些问题。然后我更改为 Pomelo.EntityFrameworkCore.MySql 并更新了数据库,没有任何错误。

关于Mysql Entity Framework 问题 - 指定的键太长;最大 key 长度为 3072 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48388856/

相关文章:

mysql - Laravel 会在每次请求时连接到数据库。我怎样才能阻止这个?

c# - 首先编码与关系表中属性的多对多关系

c# - app.UseRouting() 和 app.UseEndPoints() 有什么区别?

c# - 如何在 ASP.NET Core MVC 中显示特定的 ModelState 错误?

c# - 我如何在 ASP.NET MVC 6 (六) 代码中获取 bin 或 wwwroot 目录

PHP:使用变量从数据库检索图像。显示损坏的图像图标

MySQL 选择里面的选择里面的选择

java - 根据java中特定列中的值从sql数据库中选择一行

entity-framework - 如何向 ADO.NET 实体添加约束?

sql-server - Entity Framework 中的新对象 - 主键问题