提供 .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 服务和控制台应用程序基本上可以正常工作,但是我们在网站上苦苦挣扎。
尽管令人担忧的是,为了让数据层程序集编译一些 packageReferences 是必要的,它们在解决方案资源管理器中显示黄色三角形警告:
<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 结合使用,请您指出实现此目的的示例吗?
或者,如果您知道这种组合绝对不可能,也请告诉我。