Сейчас я занимаюсь разработкой веб-API с использованием основного веб-API ASP.NET.Я впервые использую ядро ASP.NET.Я был разработчиком ASP.NET MVC.Но некоторое время был в отъезде.Сейчас я создаю класс DbContext
для Entity Framework с командой переноса.Но я использую три разных проекта для разделения логики.
Это структура моего проекта:
[! [Введите описание изображения здесь] [1]] [1]
Я установил следующие пакеты.
Install-Package Microsoft.EntityFrameworkCore.SqlServer -Projectname thegoodyard.api
Install-Package Microsoft.EntityFrameworkCore.Tools -Projectname thegoodyard.api
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design -Projectname thegoodyard.api
Install-Package Microsoft.EntityFrameworkCore.SqlServer -Projectname thegoodyard.domain
Install-Package Microsoft.EntityFrameworkCore.Tools -Projectname thegoodyard.domain
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design -Projectname thegoodyard.domain
В проекте thegoodyard.domain
я создал класс контекста БД с именем ThegoodyardContext.cs
со следующим определением.
namespace thegoodyard.domain.Concrete
{
public virtual DbSet<Category> Categories { get; set; }
public partial class ThegoodyardContext: DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if(!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer(@"Server=(localdb)\\mssqllocaldb;Database=ThegoodyardContext;Trusted_Connection=True; MultipleActiveResultSets=true");
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
}
}
Затем в *Проект 1016 *, в методе ConfigureServices
класса StartUp
я зарегистрировал контекст следующим образом:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddDbContext<thegoodyard.domain.Concrete.ThegoodyardContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("ThegoodyardContext")));
}
Затем я включил миграцию, выполнив следующую команду
enable-migration -projectname thegoodyard.api
Но сказано, что команда слишком старая, вместо нее используйте add -igration.Я использовал это вместо этого.
add-migration CreateCategory
Затем я получил следующую ошибку
Произошла ошибка при доступе к IWebHost в классе «Программа».Продолжая без поставщика услуг приложения.Ошибка: AddDbContext был вызван с конфигурацией, но тип контекста 'ThegoodyardContext' объявляет только конструктор без параметров.Это означает, что конфигурация, переданная в AddDbContext, никогда не будет использоваться.Если конфигурация передается в AddDbContext, то «ThegoodyardContext» должен объявить конструктор, который принимает DbContextOptions, и передать его базовому конструктору для DbContext.
В сборке «thegoodyard.api» не найден DbContext.Убедитесь, что вы используете правильную сборку и что тип не является ни абстрактным, ни универсальным.
Как это исправить?