0

当生成使用实体框架的核心MySQL的所有字符串属性的我的表被创建为文本列在MySQLMySQL的EF核心的所有字符串字段创建文本列

我使用:

<PackageReference Include="MySql.Data" Version="8.0.8-*" /> 
<PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.8-*" /> 

我试图使用内置的身份认证在.NET中,当我生成的表我得到的错误:加入

BLOB/TEXT column 'NormalizedEmail' used in key specification without a key length 

我可以解决此问题:

builder.Entity<IdentityRole>().Property(i => i.NormalizedName) 
            .HasColumnType("varchar(256)"); 

但我不想为身份模型中的每一列都这样做,也不希望我添加的列像FirstName被存储为文本列。

这是EF Core for MySQL中的一个错误还是我有一些配置错误?

+0

这就是它应该的样子。只有当你有限制(MaxLength/.HasMaxLength)时,才可以选择var char。对于所有其他情况,您必须自己重写/指定 – Tseng

+0

查看迁移快照中生成的内容,它将以最大长度指定,但仍将创建为文本字段b.Property (“NormalizedUserName”)。HasMaxLength (256);' – JoAMoS

+0

我尝试了MySql.Data和MySql.Data.EntityFrameworkCore的版本'7.0.7- *',并且生成为文本列的列生成为varchar(255)。我会坚持使用7.0.7,直到我得到更好的答案。 – JoAMoS

回答

0

感谢@Tseng推荐使用Pomelo。这是一个简单的开关,它解决了我所有的问题。

相关问题