为了账号安全,请及时绑定邮箱和手机立即绑定

无法运行命令。错误:没有为此 DbContext 配置数据库提供程序

无法运行命令。错误:没有为此 DbContext 配置数据库提供程序

C#
繁花如伊 2022-10-23 10:13:46
我无法针对我创建的基本 .NET Core 2.2 Web API 运行 EntityFramework Core 命令。API 正在工作,但我无法“添加迁移”或“更新数据库”,除非我更改检索连接字符串的位置。我相信第一个示例是最佳实践,因为连接字符串更安全,但在尝试运行 EF Core 命令时出现错误。“没有为此 DbContext 配置数据库提供程序。可以通过覆盖 DbContext.OnConfiguring 方法或在应用程序服务提供程序上使用 AddDbContext 来配置提供程序。如果使用 AddDbContext,则还要确保您的 DbContext 类型接受 DbContextOptions 对象它的构造函数并将其传递给 DbContext 的基本构造函数。”据我所知,我在传递 DbContextOptions<> 时正确使用了 AddDbContext()。唯一的代码差异在于 Startup.ConfigureServices() 和 MyContext.OnConfiguring()。我的首选示例做错了什么?首选示例(EF 命令不起作用)// MyContext.cspublic class MyContext : DbContext  {    private readonly DbContextOptions<MyContext> _options;    private readonly IConfiguration _config;    public MyContext (DbContextOptions<MyContext> options, IConfiguration config) : base(options)    {      _options = options;      _config = config;    }    public DbSet<Account> Accounts { get; set; }    public DbSet<User> User { get; set; }  }}// Startup.cspublic class Startup  {    public IConfiguration Configuration { get; }    public Startup(IConfiguration configuration)    {      Configuration = configuration;    }    public void ConfigureServices(IServiceCollection services)    {      services.AddDbContext<MyContext>(        options => options.UseSqlServer(Configuration.GetConnectionString("MyAPI")));      services.AddScoped<IMyRepository, MyRepository>();      services.AddAutoMapper();      services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);    }    public void Configure(IApplicationBuilder app, IHostingEnvironment env)    {      if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); }      else { app.UseHsts(); }      //app.UseHttpsRedirection();      app.UseMvc();    }  }使用下面的代码,我可以毫无错误地运行“add-migration”和“update-database”,但我相信以这种方式检索连接字符串的安全性较低。
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

对我来说解决问题的是更新到 .NET Core 3.1.101 和 EFCore 3.1.1。



查看完整回答
反对 回复 2022-10-23
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

您只需要指定创建数据库连接的位置。

dotnet ef migrations add SomeMigration --startup-project ../path/to/Api/project

在此示例中,您正在运行迁移命令并指定包含数据库上下文的配置/设置的项目的路径。如果您未指定此项,并且设置不在 DbContext 类中,则 EF 不知道应如何配置数据库。


查看完整回答
反对 回复 2022-10-23
  • 2 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信