当我使用此命令时:
$ dotnet ef database update
我收到此错误:
指定的密钥太长;最大密钥长度为3072字节
导致此错误的表是用于用户管理的内置Microsoft表:
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));
答案 0 :(得分:4)
我使用了处于预发布状态的官方MySql提供程序MySql.Data.EntityFrameworkCore
,并且在迁移方面存在一些问题。然后我更改为Pomelo.EntityFrameworkCore.MySql
并更新了数据库而没有任何错误。
答案 1 :(得分:0)
将MySql.Data.EntityFrameworkCore更新为当前版本,并在以下位置检查项目支持的连接器 https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core.html#connector-net-entityframework-core-versions
也是mysql网站上的示例
https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core-example.html