gpt4 book ai didi

.net-core - "Error Unable to create an object of type ' AppDbContext '. For the different patterns supported at design time"

转载 作者:行者123 更新时间:2023-12-04 15:44:47 25 4
gpt4 key购买 nike

我正在使用 VS 2019 预览版和 .NET Core 3.0 创建一个 ASP .NET Core Web API。当我尝试执行:添加迁移时,出现错误:“无法创建‘AppDbContext’类型的对象。对于设计时支持的不同模式,...”

下面是我的上下文文件:

  public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{ }
public DbSet<Categoria> Categorias { get; set; }
public DbSet<Produto> Produtos { get; set; }
}

我的 ConfigureServices 方法:

public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(options => options.UseMySql(Configuration.GetConnectionString("DefaultConnection")));

services.AddControllers().AddNewtonsoftJson();
}

我的 appsettings.json

{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;DataBase....."
},
...
}

我一直在使用这种方法并且很有效。

我还尝试在上下文类中创建一个空的构造函数,但我得到了这个错误:“System.InvalidOperationException:没有为此 DbContext 配置数据库提供程序...”

我是不是忘记了一些细节?

注意:这在 ASP .NET Core 2.2 中运行良好

最佳答案

您可以告诉迁移如何创建您的 DbContext通过实现 IDesignTimeDbContextFactory<TContext>接口(interface):如果在与派生的相同项目中找到实现此接口(interface)的类 DbContext或者在应用程序的启动项目中,工具会绕过其他创建 DbContext 的方法并改用设计时工厂。

有关详细信息,请参阅 this link

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.EntityFrameworkCore.Infrastructure;

namespace MyProject
{
public class AppDbContextFactory : IDesignTimeDbContextFactory<AppDbContext>
{
public AppDbContext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder<AppDbContext>();
optionsBuilder.UseMySql("Server=localhost;DataBase.....");

return new AppDbContext(optionsBuilder.Options);
}
}
}

关于.net-core - "Error Unable to create an object of type ' AppDbContext '. For the different patterns supported at design time",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56363374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com