Предполагается, что цель предоставления версии EF6 для .NET Standard 2.1 — помочь в поэтапном обновлении существующих проектов.
Итак, у нас есть существующее решение, состоящее из веб-сайтов, службы Windows и консольных приложений. Мы находимся в процессе обновления с .NET Framework до .NET Core.
Было бы предпочтительнее, чтобы все это снова заработало в .NET Core, но пока все еще использовало версию EF6 для .NET Standard 2.1.
Модель 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.
E.g. 2
Этот пакет образует мост между ASP.NET Core и инфраструктурой идентификации:
Microsoft.AspNetCore.Identity.EntityFrameworkCore
Таким образом, можно подумать, что для того, чтобы EF6 работал с ASP.NET Core, должен быть пакет, похожий по своей природе (вымышленное имя) на Microsoft.AspNetCore.Identity.EntityFramework6
.
Если возможно использовать EF6.4 (включая таблицы, связанные с идентификацией) в сочетании с ASP.NET Core, не могли бы вы указать пример, который позволяет это сделать?
Или, если вы точно знаете, что эта комбинация определенно невозможна, сообщите мне об этом.