2016-11-28 35 views
9

Obecnie w uruchamianiu, mam mój ciąg serwer SQL wygląda tak:Korzystanie ciąg połączenia z appsettings.json do startup.cs

public void ConfigureServices(IServiceCollection services) 
{ 
    var connection = @"Server=servername;Database=database;Trusted_Connection=True;MultipleActiveResultSets=true"; 
    services.AddDbContext<CRAMSContext>(options => options.UseSqlServer(connection)); 
} 

Jak mogę wykorzystać to, co jest w moim appsettings.json:

{ 
    "Data": { 
    "DefaultConnection": { 
    "ConnectionString": "Data Source=server;Initial Catalog=database;Trusted_Connection=True;MultipleActiveResultSets=true" 
    }, 
    "Logging": { 
    "IncludeScopes": false, 
    "LogLevel": { 
     "Default": "Debug", 
     "System": "Information", 
     "Microsoft": "Information" 
    } 
    } 
} 

aby wyglądać tak w nowym ASP.NET 1.0 CORE nowej konfiguracji patrzeć paramertized tak:

public void ConfigureServices(IServiceCollection services) 
{ 
    var connection2 = new SqlConnection connectionString; 
    services.AddDbContext<CRAMSContext>(options => options.UseSqlServer(connection2)); 
} 

Al więc jeśli mam inną bazę danych dla testu i qa, w jaki sposób mogę poinformować aplikację ASP.NET o korzystaniu z połączenia dla każdego środowiska?

Moja klasa startowa jest już zdefiniowany u nasady tak:

public Startup(IHostingEnvironment env) 
{ 
    var builder = new ConfigurationBuilder() 
     .SetBasePath(env.ContentRootPath) 
     .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
     .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) 
     .AddEnvironmentVariables(); 
    Configuration = builder.Build(); 
} 

Odpowiedz

10

Zastosowanie właściwa budowa ciągów komunikacji:

{ 
    "ConnectionStrings": { 
    "DefaultConnection": "xxx" 
    } 
} 

dostępowych w startup.cs:

services.AddDbContext<ApplicationDbContext>(options => 
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); 
+0

I get: 'Błąd: Nazwa" Konfiguracja "nie istnieje w bieżącym kontekście'. Której paczki brakuje? EDYCJA: Nieważne, jest to problem w przedpremierowej wersji v2. W wersji 1.1 stabilnej wszystko jest w porządku. – JedatKinports

+1

brakuje metody "IConfiguartionRoot" w pliku Startup.cs. Nazwij ją konfiguracją, dodaj do niej dostęp i gotowe. –