将ASP.NET核心标识从SQL Server迁移到MySQL时出现问题

将ASP.NET核心标识从SQL Server迁移到MySQL时出现问题,mysql,asp.net,sql-server,asp.net-core,asp.net-identity,Mysql,Asp.net,Sql Server,Asp.net Core,Asp.net Identity,现在MySQL数据库提供程序已经发布(“预发布”),我正在将我的ASP.NET核心项目从使用Microsoft SQL Server迁移到MySQL。在使用SQL Server时,我使用核心标识作为成员身份,它在该配置中工作。当我将数据库迁移到MySQL时(使用MySQL工作台中的迁移向导),我在将新用户保存到数据库时开始收到以下错误: 找不到CLR类型“Microsoft.EntityFrameworkCore.Metadata.Internal.Property”与关系类型的映射 执行Cre

现在MySQL数据库提供程序已经发布(“预发布”),我正在将我的ASP.NET核心项目从使用Microsoft SQL Server迁移到MySQL。在使用SQL Server时,我使用核心标识作为成员身份,它在该配置中工作。当我将数据库迁移到MySQL时(使用MySQL工作台中的迁移向导),我在将新用户保存到数据库时开始收到以下错误:

找不到CLR类型“Microsoft.EntityFrameworkCore.Metadata.Internal.Property”与关系类型的映射

执行CreateAsync方法时,此代码中出现错误:

public IActionResult Register([FromBody]RegisterViewModel obj)
    {
        if (ModelState.IsValid)
        {
            IdentityUser user = new IdentityUser();
            user.UserName = obj.Username;
            user.Email = obj.Email;

            IdentityResult result = _userManager.CreateAsync(user, obj.Password).Result;
         }
    }
以下是我的DbContext类:

using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;

namespace PilotMaltApiCore.Models
{
   public class PilotDbContext : IdentityDbContext<IdentityUser, IdentityRole, string>
   {
       public PilotDbContext(DbContextOptions<PilotDbContext> options)
           : base(options)
       {
           //nothing here
       }

       public DbSet<Batch> Batches { get; set; }
       public DbSet<Bag> Bags { get; set; }
       public DbSet<Vendor> Vendors { get; set; }
       public DbSet<Variety> Varieties { get; set; }
   }
}
使用Microsoft.AspNetCore.Identity.EntityFrameworkCore;
使用Microsoft.EntityFrameworkCore;
命名空间PilotMaltApiCore.Models
{
公共类PilotDbContext:IdentityDbContext
{
公共PilotDbContext(DbContextOptions选项)
:基本(选项)
{
//这里什么都没有
}
公共数据库集批处理{get;set;}
公共数据库集包{get;set;}
公共数据库集供应商{get;set;}
公共DbSet变量{get;set;}
}
}
我想这可能与SQLServer和MySQL之间的数据类型不同有关。以下是SQL Server表:

下面是MySQL工作台中使用迁移向导后的MySQL表:


请记住,在使用SQL Server时,所有代码都运行良好。非常感谢您的帮助,谢谢

本教程对我来说效果很好:


我将varchar字段的字符集更改为utf8mb4,从而解决了这个问题

我还选择使用Sapient Guardian版本的MySql provider for.net Core,事实证明,该版本的问题比MySql版本小得多。可以下载