无法创建“ ApplicationDbContext”类型的对象。将“ IDesignTimeDbContextFactory <ApplicationDbContext>”的实现添加到项目中

时间:2020-10-22 17:32:09

标签: c# entity-framework asp.net-core angular8

我正在尝试使用asp.net Core 2.1创建一个Angular 8项目。 每当我尝试使用命令添加迁移

cmd命令:dotnet ef迁移添加init --project ../ Lgn.DAL

终端抛出错误: 无法创建“ ApplicationDbContext”类型的对象。将“ IDesignTimeDbContextFactory”的实现添加到项目中,或者在设计时参见https://go.microsoft.com/fwlink/?linkid=851728&clcid=0x804。

Startup.cs

`` 公共类创业 { 公共启动(IConfiguration配置) { 配置=配置; }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlite(Configuration.GetConnectionString("DefaultConnection")));

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

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }
        app.UseCors(builder =>
        {
            builder.WithOrigins("http://localhost:4200");
            builder.AllowAnyMethod();
            builder.AllowAnyHeader();
        });

        app.UseHttpsRedirection();
        app.UseMvc();
    }
}``

1 个答案:

答案 0 :(得分:1)

与有类似问题的人看看this solution。您的依赖项注入设置是否很好? (该列表中的第二名)

这里是要考虑的事情:

您会收到此错误,因为要生成迁移,您需要:

  • 具有默认构造函数(即无参数)的DbContext 构造函数)
  • 能够从ApplicationServices获取DbContext (即依赖注入)
  • 一个设计时工厂,返回一个 正确配置的DbContext。