IdentityServer4 2.0.2를 사용 중이고 QuickStart tutorial에 따라 Entity Framework Core를 사용했습니다. 기본 스키마 (dbo)에서 SQL Server의 사용자 지정 스키마로 변경하려고합니다. 다음 코드는 "idsrv4"스키마에서 테이블을 찾도록 DbContexts에 지시하여 올바르게 작동합니다. 내 개발 환경에서 IdentityServer4 Entity Framework 핵심 마이그레이션을위한 스키마는 어떻게 지정합니까?
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
var identityConnectionString = Configuration.GetConnectionString("Identity");
var migrationsAssembly = typeof(Startup).GetTypeInfo().Assembly.GetName().Name;
services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddTestUsers(Config.GetUsers())
.AddConfigurationStore(options =>
{
options.DefaultSchema = "idsrv4";
options.ConfigureDbContext = builder => builder.UseSqlServer(identityConnectionString,
sql => sql.MigrationsAssembly(migrationsAssembly));
})
.AddOperationalStore(options =>
{
options.DefaultSchema = "idsrv4";
options.ConfigureDbContext = builder => builder.UseSqlServer(identityConnectionString,
sql => sql.MigrationsAssembly(migrationsAssembly));
});
}
, 나는 다음과 같은 코드로 Startup.cs의 구성() 메소드에서 데이터베이스를 초기화하고 있습니다 :
var context = serviceScope.ServiceProvider.GetRequiredService<ConfigurationDbContext>();
context.Database.Migrate();
문제를 테이블이 여전히에서 생성되는 것을 dbo 스키마 Migrate() 메서드 (Microsoft.EntityFrameworkCore)에서 제공 한 스키마를 사용하도록 지시하려면 어떻게합니까? 여기
마이그레이션을 만들기 전에'DefaultSchema' *를 설정 했습니까? –
수동으로 마이그레이션을 만들지 않았습니다. 방금 Migrate()를 호출하고 데이터베이스가 만들어졌습니다. 테스트를 위해 데이터베이스를 삭제하고 앱을 다시 실행합니다. context.Database.Migrate() 메서드 호출에 도달하면 데이터베이스를 만듭니다. 어딘가에서 코딩 된 마이그레이션을 찾아야합니까? 프로젝트에 Migrations 폴더가 없습니다. NuGet 패키지에있는 EF 모델로 작업하는 것은 새로운 영역입니다. – LJFraney
에서 [워드 프로세서] (https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.relationaldatabasefacadeextensions.migrate?view=efcore-2.0#Microsoft_EntityFrameworkCore_RelationalDatabaseFacadeExtensions_Migrate_Microsoft_EntityFrameworkCore_Infrastructure_DatabaseFacade_) Migrate' *이 보류 상태 마이그레이션을 적용한다는' 데이터베이스 컨텍스트에 대한. 이미 존재하지 않으면 데이터베이스를 만듭니다. *. 이것은'dbo'를 사용하도록 이미 설정된 어딘가에서 마이그레이션 클래스를 가져야한다고 생각합니다. –