У меня ошибка при настройке строки подключения в ядре asp.net с помощью приложения JSON и внедрения зависимостей - PullRequest
0 голосов
/ 02 апреля 2019

Я новичок в Asp.Net Core. Я пытаюсь настроить строку подключения, как это предлагается на официальной странице блога учебника Microsoft. в мой appsettings.json я вставил следующий код.

"ConnectionStrings": 
     {
          "PersonDBContext": "Server=(localdb)\\mssqllocaldb;Database=name;Trusted_Connection=True;MultipleActiveResultSets=true"
     }

и мой Startup.cs файл содержит

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

Я унаследовал PersonDbContext от DbContext.

Но при компиляции выдает следующую ошибку.

Код серьезности Описание Подавление источника строки файла проекта Ошибка состояния CS0311 Тип «Gumshuda.DAL.PersonDBContext» не может быть используется в качестве параметра типа «TContext» в универсальном типе или методе
«EntityFrameworkServiceCollectionExtensions.AddDbContext
IServiceCollection, Action, ServiceLifetime, ServiceLifetime). Не существует неявного преобразования ссылок из «Gumshuda.DAL.PersonDBContext» - «Microsoft.EntityFrameworkCore.DbContext». Gumshuda
C: \ Users \ nas \ source \ repos \ Gumshuda \ Gumshuda \ Startup.cs 38
IntelliSense Active

Пожалуйста, скажите мне, как я могу это исправить и все о внедрении зависимостей. Мой PersonDbContext выглядит следующим образом

 public class PersonDBContext:DbContext
    {
        public DbSet<Person> People { get; set; }
    }

1 Ответ

0 голосов
/ 02 апреля 2019

Ошибка довольно ясно указывает на то, что ваш контекст не наследуется от DbContext. Тем не менее, вы опубликовали код для указанного контекста, и он действительно наследуется от DbContext. Если предположить, что код правильный, то единственное, что имеет смысл, это то, что это не право DbContext.

Если вы посмотрите на ошибку ближе, вы увидите, что в ней упоминается, что контекст должен наследоваться от Microsoft.EntityFrameworkCore.DbContext. Я предполагаю, что вы на самом деле наследуете от EntityFramework.DbContext, т.е. не EF Core, а EF6.

В этом случае вы не можете использовать AddDbContext, поскольку только работает с ядром Entity Framework, а не с EF6. Вполне возможно, что вы случайно ссылались на NuGet Entity Framework, когда имели в виду ссылку на Entity Framework Core. Убедитесь, что ваша ссылка на пакет Microsoft.EntityFrameworkCore, а не EntityFramework.

...