Невозможно преобразовать лямбда-выражение в тип «ServiceLifetime», потому что это не тип делегата в ядре Asp.net 2.2 - PullRequest
2 голосов
/ 15 апреля 2019

Почему я получаю эту ошибку:

Невозможно преобразовать лямбда-выражение в тип 'ServiceLifetime', поскольку оно не является типом делегата [TokenAuthWebApiCore.Server]

onэта строка кода:

public virtual void SetUpDataBase(IServiceCollection services)
{
    // Add framework services.
        services.AddDbContext<SecurityContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("SecurityConnection"), sqlOptions => sqlOptions.MigrationsAssembly("TokenAuthWebApiCore.Server")));
}

Вот как я ее использую:

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton(Configuration);

    services.AddMvc();

    SetUpDataBase(services);

    // services.AddDbContext<SecurityContext>(options =>
    //      options.UseSqlServer(Configuration.GetConnectionString("SecurityConnection"), sqlOptions => sqlOptions.MigrationsAssembly("TokenAuthWebApiCore.Server")));

    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

public virtual void SetUpDataBase(IServiceCollection services)
{
    // Add framework services.
        services.AddDbContext<SecurityContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("SecurityConnection"), sqlOptions => sqlOptions.MigrationsAssembly("TokenAuthWebApiCore.Server")));
}

Это все мои операторы использования

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.IdentityModel.Tokens;
using System.Text;

Я думаю, вероятно, этопотому что учебник я следую учебнику для другой версии .net core и использую .net core версии 2.2.Можете ли вы показать мне, как это исправить?Спасибо.

Ответы [ 5 ]

4 голосов
/ 15 апреля 2019

SecurityContext не является DbContext. Если у вас есть DbContext с именем SecurityContext в вашем проекте, удалите using System.Security; из вашего использования в вашем классе Startups.cs или переименуйте DbContext в что-то вроде SecurityDbContext.

Общий тип, который вы используете при вызове AddDbContext, взят из пространства имен System.Security, но это должен быть контекст вашей базы данных.

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

У меня была такая же ошибка в моем проекте.Проблема заключалась в том, что мой контекстный класс не был производным от DbContext.

public class SecurityContext : DbContext
{
}
0 голосов
/ 22 июля 2019

У меня просто была такая же проблема при переносе проекта в ядро ​​EF. Случилось так, что контекст БД все еще был определен для EF. Чтобы исправить это, я изменил DbContext для включения ядра EF и добавил конструктор DbContextOptions.

Полное объяснение на сайте aspnetcore .

0 голосов
/ 05 июля 2019

Я получил это, когда случайно установил EntityFramework вместо Microsoft.EntityFrameworkCore в моем проекте данных.

0 голосов
/ 20 июня 2019
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            services
            .AddEntityFrameworkSqlServer()
            .AddDbContext<EmployeeContext>(options =>
            {
                options.UseSqlServer(Configuration.GetConnectionString("EmployeeContext"));
            });

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