无法迁移实体框架核心中的 DbContext 类



我现在正在使用 ASP.NET 核心Web api开发一个Web api。这是我第一次使用 ASP.NET 核心。我是一名 ASP.NET MVC开发人员。但是离开了一段时间。我现在正在做的是为运行迁移命令的实体框架创建一个DbContext类。但是我正在使用三个不同的项目来分离逻辑。

这是我的项目结构:

[!在此处输入图像描述][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)
{
}
}
}

然后在Thegoodyard.api项目中,在StartUp类的ConfigureServices方法中,我像这样注册了上下文:

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-migration CreateCategory

然后我收到以下错误

在类"程序"上访问 IWebHost 时出错。在没有应用程序服务提供商的情况下继续。错误:AddDbContext 是使用配置调用的,但上下文类型"ThegoodyardContext"仅声明无参数构造函数。这意味着传递给 AddDbContext 的配置将永远不会被使用。如果将配置传递给AddDbContext,则"ThegoodyardContext"应该声明一个接受DbContextOptions的构造函数,并且必须将其传递给DbContext的基本构造函数。

在汇编 'thegoodyard.api' 中找不到 DbContext。确保使用正确的程序集,并且类型既不是抽象的也不是泛型的。

我该如何解决它?

打开包管理器控制台

默认项目 :"选择图层名称",例如 :thegoodyard.domain然后

Enable-Migrations

请查看此链接 http://www.entityframeworktutorial.net/code-first/code-based-migration-in-code-first.aspx

相关内容

最新更新