首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeLoadException方法“IsValid”类型在Pomelo.EntityFrameworkCore.MySql.Update中没有实现

TypeLoadException方法“IsValid”类型在Pomelo.EntityFrameworkCore.MySql.Update中没有实现
EN

Stack Overflow用户
提问于 2022-04-17 17:59:09
回答 2查看 384关注 0票数 0

当我结合使用Pomelo.EntityFrameworkCore.MySqlMicrosoft.AspNetCore.Identity时,我会得到这个错误。

我的依赖性是错的吗?类似的问题已经报告了2021年,但与较早的版本。

https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql/issues/1510

代码语言:javascript
复制
TypeLoadException: Method 'IsValid' in type 'Pomelo.EntityFrameworkCore.MySql.Update.Internal.MySqlModificationCommandBatch' from assembly 'Pomelo.EntityFrameworkCore.MySql, Version=6.0.1.0, Culture=neutral, PublicKeyToken=2cc498582444921b' does not have an implementation.

csproj

代码语言:javascript
复制
 <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0" />
        <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.0-rc.2.21480.10" />
        <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="6.0.4" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.0-preview.3.22175.1">
          <PrivateAssets>all</PrivateAssets>
          <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
        </PackageReference>
        <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.0-preview.3.22175.1">
            <PrivateAssets>all</PrivateAssets>
            <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
        </PackageReference>
        <PackageReference Include="MySqlConnector" Version="2.1.8" />
        <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="6.0.1" />
    </ItemGroup>

ApplicationDbContext

代码语言:javascript
复制
public class ApplicationDbContext : IdentityDbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
    {
    }
}

Programm.cs

代码语言:javascript
复制
var connectionString = builder.Configuration.GetConnectionString("Default");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
{
    options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString));
});

builder.Services.AddIdentity<IdentityUser, IdentityRole>(options =>
{
    options.Password.RequiredLength = 8;
    options.Password.RequireLowercase = true;
    options.Password.RequireUppercase = true;

    options.Lockout.MaxFailedAccessAttempts = 5;
    options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(15);
    options.User.RequireUniqueEmail = true;
}).AddEntityFrameworkStores<ApplicationDbContext>();

builder.Services.ConfigureApplicationCookie(options =>
{
    options.LoginPath = "/Account/Login";
    options.AccessDeniedPath = "/Account/AccessDenied";
});

var app = builder.Build();

寄存器

代码语言:javascript
复制
public class RegisterModel : PageModel
{
    private readonly UserManager<IdentityUser> userManager;

    public RegisterModel(UserManager<IdentityUser> userManager)
    {
        this.userManager = userManager;
    }

    [BindProperty] public RegisterViewModel RegisterViewModel { get; set; } 
..
..


  public async Task<IActionResult> OnPostAsync()
    {... 

 var result = await userManager.CreateAsync(user, RegisterViewModel.Password); // ERROR

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-18 10:52:08

尝试合并已安装的包版本,特别是预览版本(特别是EF 7)。只更新左边:

代码语言:javascript
复制
<ItemGroup>
    ...
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.4" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.4">
        <PrivateAssets>all</PrivateAssets>
        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.4">
        <PrivateAssets>all</PrivateAssets>
        <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    ...
</ItemGroup>
票数 1
EN

Stack Overflow用户

发布于 2022-04-30 01:51:08

我在VS2022上也面临着同样的问题。我通过将EF工具的版本从7.0.0改为6.0.4和6.0.1中的Pomelo来解决这个问题;另一个选择是在包管理器控制台中运行"update-database“命令。希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71904217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档