Я не могу получить строку подключения в классе DbContext в .NET Core 2.2 Razor Pages - PullRequest
0 голосов
/ 17 мая 2019

В Startup.cs Configure Services это работает:

var connection = Configuration["ConnectionStrings:DefaultConnection"];

        services.AddDbContext<MyDbContext>(
                 options => { options.UseSqlServer(connection); });

В моем классе MyDbContext.cs это не работает:

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;

using OESAC.Models;

namespace OESAC.Models
{
    public class MyDbContext : DbContext
    {
        public MyDbContext(DbContextOptions<MyDbContext> options)
        : base(options)
        { }

        public DbSet<Courses> Courses { get; set; }
        public DbSet<Sponsors> Sponsors{ get; set; }

        public IConfiguration Configuration { get; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {

           var connection = Configuration["ConnectionStrings:DefaultConnection"];

            optionsBuilder.UseSqlServer(connection);

            ;
        }


    }
}

Я могу жестко закодировать строку подключения, но я хочу, чтобы она динамически изменялась в зависимости от моих appSettings.Development.json и appSettngs.json (production).Я не могу поверить времени, которое я потратил, пытаясь понять это.Это стоило мне того, что мне платят.

1 Ответ

1 голос
/ 17 мая 2019

Вам необходимо ввести IConfiguration в конструктор, чтобы получить доступ к конфигурации.

public class MyDbContext : DbContext
{
    private readonly IConfiguration _configuration;

    public MyDbContext(IConfiguration configuration)       
    {
       _configuration = configuration
    }

    public DbSet<Courses> Courses { get; set; }
    public DbSet<Sponsors> Sponsors{ get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {

       var connection = _configuration["ConnectionStrings:DefaultConnection"];

        optionsBuilder.UseSqlServer(connection);            
    }
}

Startup.cs:

services.AddDbContext<ApplicationDbContext>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...