C# .Net标准2.0中的ApplicationDbContext.OnModelCreating()缺少MethodException
这是我在中提出的问题之一,但我想用一个小例子单独解释: 设置:C# .Net标准2.0中的ApplicationDbContext.OnModelCreating()缺少MethodException,c#,asp.net-core,asp.net-identity,.net-standard,C#,Asp.net Core,Asp.net Identity,.net Standard,这是我在中提出的问题之一,但我想用一个小例子单独解释: 设置: .Net标准2.0库 .NETFramework 4.7.2WebForms应用程序 .Net标准库具有以下代码: public class Class1 { public static void doStuff() { var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext&g
public class Class1
{
public static void doStuff()
{
var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>();
optionsBuilder.UseSqlServer("MyConnectionString");
var userStore = new UserStore<ApplicationUser, MyRole, ApplicationDbContext, Guid>(
new ApplicationDbContext(optionsBuilder.Options)
); // the userStore.Users property shows already the exception in the debugger
AspNetUserManager<ApplicationUser> userManager = new AspNetUserManager<ApplicationUser>(
userStore,
null,
new PasswordHasher<ApplicationUser>(),
new List<UserValidator<ApplicationUser>>() { new UserValidator<ApplicationUser>() },
null,
null,
null,
null,
null
);
var x = userManager.Users; // exception throw (see next code snipped)
}
}
例外情况:
System.MissingMethodException:'Methode nicht gefunden:'Microsoft.EntityFrameworkCore.Metadata.Builders.IndexBuilder Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder1.HasIndex(System.Linq.Expressions.Expression
1>)'
配置.Net标准2.0项目:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.1" />
<PackageReference Include="Microsoft.Extensions.Identity.Stores" Version="3.1.1" />
</ItemGroup>
</Project>
netstandard2.0
参考资料:
这里他们说要更新到“Microsoft.AspNetCore.Identity”3.x,但我不能这样做,因为它与.Net标准2.0项目不兼容,我需要在WebForms项目中使用它
所以我的问题是,如果有人知道以不同方式生成用户管理器的解决方法。。。我需要使用aspnetcore标识获取和设置用户(并验证)(数据库等已迁移)因此,我有一个解决问题的方法: 使用Microsoft.EntityFrameworkCore.SqlServer版本2.2.6(不3.1.1,尽管它应该与.net标准2.0一起使用…) 和一系列
- 删除nuget包
- 清除nuget缓存
- 正在删除本地计算机上的nuget程序包(在C:/../Users/../nuget文件夹中)
- 将nuget管理格式更改为“PackageReference”
- 大哭
- 重新安装所有程序和处理警告都有帮助
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
Class1.doStuff();
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.1" />
<PackageReference Include="Microsoft.Extensions.Identity.Stores" Version="3.1.1" />
</ItemGroup>
</Project>