AddDbContext не работает в ConfigureServices ASP.NET Razor 2.2 - PullRequest
0 голосов
/ 18 апреля 2019

Я перевернул базу данных sql-сервера в соответствующие им классы и контекст, и все это, похоже, работало нормально.

В классе контекста min есть строка кода, указывающая на строку подключения, которая, если ее оставить, работает нормально, но строка подключения полностью встроена в файл контекста.

Я попытался закомментировать его вне контекста и добавить через раздел ConfigureServices (чтобы я мог использовать строку conn в appsettings.json ), используя

services.AddDbContext<myDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("dbconn")));

Но когда я бегу, я получаю ошибку: -

System.InvalidOperationException: 'Поставщик базы данных не был настроен для этого DbContext. Поставщик может быть настроен переопределение метода DbContext.OnConfiguring или с помощью AddDbContext на поставщика услуг приложения. Если используется AddDbContext, то также убедитесь, что ваш тип DbContext принимает DbContextOptions<TContext> объект в своем конструкторе и передает его базовый конструктор для DbContext. '

Я пробовал множество вещей в Google, но всегда получаю одну и ту же ошибку, если я не раскомментирую жестко закодированную строку соединения в файле класса контекста.

Есть идеи, что я делаю не так?

Я перепробовал множество ответов Google, и у всех одна и та же ошибка: -

System.InvalidOperationException: 'Поставщик базы данных не был настроен для этого DbContext. Поставщик может быть настроен переопределение метода DbContext.OnConfiguring или с помощью AddDbContext на поставщика услуг приложения. Если используется AddDbContext, то также убедитесь, что ваш тип DbContext принимает DbContextOptions<TContext> объект в своем конструкторе и передает его базовый конструктор для DbContext. '

Я комментирую это из контекстного класса: -

optionsBuilder.UseSqlServer("Server=MYSERVER\\MSSQL2017EXPRESS;Database=DBNAME;Trusted_Connection=True;user id=DBUSER;password=DBPASSWORD;");

И это то, что находится в файле startup.cs, но не работает: -

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });
   services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

    //My DB conn
    services.AddDbContext<myDatabaseContext>(options => options.UseSqlServer(Configuration.GetConnectionString("dbconn")));

}

Мне нужно предоставить строку подключения из appsettings.json и не указывать ее жестко в файле класса контекста.

1 Ответ

1 голос
/ 18 апреля 2019

Скорее всего, вам не хватает конструктора в вашем контексте.

public myDatabaseContext(DbContextOptions<myDatabaseContext> options) : base(options) {
    //...
}

, как указано в сообщении об ошибке

Если используется AddDbContext, то также убедитесь, что вашТип DbContext принимает объект DbContextOptions<TContext> в своем конструкторе и передает его базовому конструктору для DbContext. '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...