Я пытаюсь подключить персистентность к своему серверу идентификации, добавив платформу сущностей. В настоящее время при попытке добавить миграцию я получаю сообщение об ошибке
Не найден DbContext с именем «ConfigurationDbContext».
Перед запуском миграции у меня есть cd
в каталоге, в котором находится мой файл .csproj, и я запускаю dotnet ef migrations add InitConfigration -c ConfigurationDbContext -o Data/Migrations/IdentityServer/Configuration
, чтобы попытаться добавить миграцию.
Мой Startup.cs
класс выглядит следующим образом:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
var migrationsAssembly = typeof(ApplicationDbContext).GetTypeInfo().Assembly.GetName().Name;
services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddAspNetIdentity<ApplicationUser>()
.AddConfigurationStore(options =>
{
options.ConfigureDbContext = builder =>
builder.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
db => db.MigrationsAssembly(migrationsAssembly));
})
.AddOperationalStore(options =>
{
options.ConfigureDbContext = builder =>
builder.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
db => db.MigrationsAssembly(migrationsAssembly));
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseIdentityServer();
app.UseMvc();
}
}
Как я могу решить эту проблему?
РЕДАКТИРОВАТЬ: После дальнейшего изучения, когда я использую флаг --project
при генерации миграции следующим образом: dotnet ef migrations add InitConfigration -c ConfigurationDbContext -o Data/Migrations/IdentityServer/Configuration --project BleacherBuddy.IdentityServerService
, я получаю ошибку:
MSBUILD: ошибка MSB1009: файл проекта не существует. Невозможно
получить метаданные проекта. Убедитесь, что это основанное на MSBuild ядро .NET
Проект
Мое текущее предположение состоит в том, что, поскольку это проект фабричной службы (ядро .net без сохранения состояния), процесс сборки здесь терпит неудачу и не позволяет мне сгенерировать миграцию. После некоторого исследования я все еще не уверен, как преодолеть это или это актуальная проблема. Я воссоздал проект простого сервера идентификации в виде веб-API (не используя сервисную фабрику) и смог генерировать классы, как и ожидалось. Вся помощь приветствуется.