EF 7에서 둘 이상의 dbcontext 구성

c# entity-framework-core visual-studio-2015

문제

VS 2015 ctp로 웹 스타터 응용 프로그램을 만들었습니다. 메모리 테스트를 위해 메모리 저장소를 추가하고 싶지만 데이터를 읽으려고하면이 메시지가 나타납니다.

데이터 저장소 'SqlServerDataStore' 'InMemoryDataStore'를 사용할 수 있습니다. 컨텍스트는 단일 데이터 저장소를 사용하도록 만 구성 할 수 있습니다. DbContext 클래스의 OnConfiguring 또는 서비스 설정시 AddDbContext 메서드를 재정 의하여 데이터 저장소를 구성합니다.

두 번째 데이터 저장소를 만들려면 어떻게해야합니까? 이제 ConfigureService 메소드에이 행이 있습니다.

AddEntityFramework(Configuration)
  .AddSqlServer()
  .AddDbContext<ApplicationDbContext>()
  .AddInMemoryStore()
  .AddDbContext<WorkModel>( options => { options.UseInMemoryStore(persist: true); });

편집 : 시나리오가 명확하지 않은 것 같습니다. 나는 identy SQL 서버 dbcontext가 있고, 메모리에서 실행하고 싶은 두 번째 dbcontext를 완전히 분리하려고합니다. 두 개의 다른 데이터 저장소를 사용하여 두 개의 다른 dbcontext를 구성하는 방법을 찾고 있습니다.

첫 번째는 Identity ApplicationDbContext이고 다른 하나는 다음과 같습니다.

AddEntityFramework(Configuration)
  .AddSqlServer()
  .AddDbContext<ApplicationDbContext>()
  .AddInMemoryStore()
  .AddDbContext<WorkModel>( options => { options.UseInMemoryStore(persist: true); });

또는 사용자 정의 dbcontext를 원하십니까?

인기 답변

여러 데이터 저장소에 하나의 DbContext 유형을 사용할 수 있습니다. 그러나 .AddDbContext() 대한 호출에는 .AddDbContext() 가 없습니다. 다음은 그림에서 .ConfigureServices() 완전히 제거하는 방법의 예입니다.

class MyContext : DbContext
{
    bool _useInMemory;

    public MyContext(bool useInMemory)
    {
        _useInMemory = useInMemory;
    }

    protected override void OnConfiguring(DbContextOptions options)
    {
        if (_useInMemory)
        {
            options.UseInMemoryStore(persist: true);
        }
        else
        {
            options.UseSqlServer();
        }
    }
}

그런 다음 사용할 공급자를 지정하는 컨텍스트를 인스턴스화 할 수 있습니다.

class MyContext : DbContext
{
    bool _useInMemory;

    public MyContext(bool useInMemory)
    {
        _useInMemory = useInMemory;
    }

    protected override void OnConfiguring(DbContextOptions options)
    {
        if (_useInMemory)
        {
            options.UseInMemoryStore(persist: true);
        }
        else
        {
            options.UseSqlServer();
        }
    }
}



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.