【发布时间】:2020-07-12 06:00:28
【问题描述】:
提供 .NET Standard 2.1 版本的 EF6 的目的被理解为协助分阶段升级现有项目。
所以我们有一个由网站、Windows 服务和控制台应用程序组成的现有解决方案。我们正在将其从 .NET Framework 升级到 .NET Core。
最好让它在 .NET Core 中再次运行,但目前仍使用 .NET Standard 2.1 版本的 EF6。
EF6 模型派生自IdentityDbContext 以包含用户、角色等的身份存储。
public class DbContextTasking : IdentityDbContext<AspNetUser, AspNetRole, string, AspNetUserLogin, AspNetUserRole, AspNetUserClaim>
所有代码现在都在 .NET Core 或 .NET Standard 程序集中。
升级后的 Windows 服务和控制台应用程序基本上可以正常工作,但我们在网站方面遇到了困难。
尽管令人担忧的是,为了编译数据层程序集,需要在解决方案资源管理器中显示黄色三角形警告的一些 packageReference:
<PackageReference Include="Microsoft.AspNet.Identity.EntityFramework" Version="2.2.3" />
“包 x 是使用 .NET Framework 4.6.1 恢复的……这个包可能不完全兼容……”
暂时忽略这些警告,表演者正在了解如何获得一个带有身份、身份验证和授权的 ASP.NET Core 网站,以使用 EF6。
例如,显示 EF Core 用法的示例在其 ConfigureServices 函数中:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
但是'.UseSqlServer'来自程序集Microsoft.EntityFrameworkCore.SqlServer
还有:
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<DbContextTasking>()
.AddDefaultTokenProviders();
AddEntityFrameworkStores 再次与 EF Core 存储相关。
例如2
这个包构成了 ASP.NET Core 和身份基础设施之间的桥梁:
Microsoft.AspNetCore.Identity.EntityFrameworkCore
所以有人会认为,要让 EF6 与 ASP.NET Core 一起工作,就需要有一个本质上类似的包(组成名称)Microsoft.AspNetCore.Identity.EntityFramework6
如果可以将 EF6.4(包括身份相关表)与 ASP.NET Core 结合使用,请您指出一个实现此目的的示例吗?
或者,如果您知道这种组合绝对不可能,也请告诉我。
【问题讨论】:
标签: entity-framework-core asp.net-identity asp.net-core-3.1 entity-framework-6.4