ASP.NET Core 2.1 не распознает расширение конфигурации - PullRequest
2 голосов
/ 09 мая 2019

Я пытаюсь настроить свой проект, но всегда получаю эту ошибку:

Невозможно преобразовать лямбду в тип 'ServiceLifetime', потому что это не тип делегата.

В моем классе Startup я сделал:

public Startup(IConfiguration configuration)
{
     Configuration = configuration;
}

public IConfiguration Configuration { get; }

И

public void ConfigureServices(IServiceCollection services)
{
     services.AddDbContext<ServiceProvider>(options => options.UseSqlServer(Configuration.GetConnectionString("ConnectionStrings")));
}

Я даже пытался установить пакет Microsoft.Extensions.Configuration;, но все равно я получаю ту же ошибку!

Ответы [ 2 ]

3 голосов
/ 09 мая 2019

Проблема в том, что вы используете ServiceProvider в качестве DbContextType в services.AddDbContext<TContext>.Заменить services.AddDbContext<ServiceProvider> на services.AddDbContext<YourDbContext> следующим образом:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<YourDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("ConnectionStrings")));
}
2 голосов
/ 09 мая 2019

Вы передаете ServiceProvider вместо класса типа DbContext.Добавьте новый класс, производный от DbContext.Итак, здесь вам необходимо создать класс, подобный этому:

public class ApplicationDbContext: DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options):base(options){
}
}

и в классе запуска:

public void ConfigureServices(IServiceCollection services)
{
 services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("ConnectionStrings")));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...