Класс DbContext в .Net Core - PullRequest
0 голосов
/ 05 октября 2018

Привет, ребята. Я пытаюсь перейти с Asp.Net MVC 5 на веб-приложение .Net Core 2.0.

Я застрял с ошибкой:

Невозможно выполнить преобразование из'string' to 'Microsoft.EntityFrameworkCore.DbContextOptions'

Я получаю вышеуказанную ошибку при наведении курсора на класс:

 public class ExampleModelWrapper : DbContext
    {
        public ExampleModelWrapper()
            : base("name=EXAMPLE_MODEL")
        {
        }
    }

ExampleModelWrapper является моделью.

Я упоминал следующий вопрос о переполнении стека: Как реализовать строку подключения DbContext в .NET Core?

У меня есть строка подключения в appsettings.json:

{
  "ConnectionStrings": {
    "EXAMPLE_MODEL": "Server=(localdb)\\mssqllocaldb;Database=aspnet-Monitoring-CCA7D047-80AC-4E36-BAEA-3653D07D245A;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }
}

Я предоставил службу в файле startup.cs:

 public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("EXAMPLE_MODEL")));

            services.AddIdentity<ApplicationUser, IdentityRole>()
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();

            // Add application services.
            services.AddTransient<IEmailSender, EmailSender>();

            services.AddMvc();
        }

В чем может быть причина вышеуказанной ошибки.Я считаю, что соединение с базой данных успешно устанавливается, поскольку оно работает для входа в систему и регистрации Identity Db. Я также нахожусь в тупике о том, как или где изменить соединения для Db идентификации.Помощь оценена, спасибо !!

1 Ответ

0 голосов
/ 05 октября 2018

Вам необходимо использовать следующий конструктор в вашем DbContext

public ExampleModelWrapper (DbContextOptions<ExampleModelWrapper> options)
    : base(options)
{
}

При запуске вам необходимо изменить следующее:

services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("EXAMPLE_MODEL")));

на следующее:

services.AddDbContext<ExampleModelWrapper>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("EXAMPLE_MODEL")));

По сути, вам нужно указать DbContext, который вам нужно использовать.

...