【问题标题】:ASP.NET API: No database provider has been configured for this DbContextASP.NET API:没有为此 DbContext 配置数据库提供程序
【发布时间】:2019-02-17 02:23:49
【问题描述】:

我正在尝试从我的 .Net Core API 项目连接到 MySql 数据库。

这是我的上下文类:

public class MyContext : DbContext
{
    public MyContext() { }

    public MyContext(DbContextOptions<MyContext> options)
         : base(options) { }

    public MyContext(DbContextOptions options)
         : base(options) { }

        ...
}

这是我的startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    string MyConnectionString = "server=localhost;port=3306;user=root;password=*****;database=my_db";
    services.AddDbContext<MyContext>(options => options.UseMySQL(MyConnectionString));
}

我知道这个问题已经被问了一百万次了,但我仍然无法解决它。

编辑:在控制器中,我使用无参数构造函数实例化我的MyContext

【问题讨论】:

  • 尝试使用此服务器=.\\instanceName;Database=my_db;User Id=root;Password=********;
  • 不需要端口名称并写下实例名称(sql server 名称)这应该可以,如果是这种情况,请告诉我,以便我给您一个答案。
  • 尝试将 'services.AddMvc()' 作为方法的最后一个操作。
  • 您使用的是 .NET Core 2.1 吗?原因,如果我理解正确,则不支持:dev.mysql.com/doc/connector-net/en/…
  • 尝试删除你的 dbcontext 的默认构造函数 (public MyContext() { })

标签: c# mysql asp.net-web-api .net-core


【解决方案1】:

让我们试试别的吧:

首先,在您的 DbContext 中创建 OnConfiguring 方法:

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder
           .UseMYSQL("... connection string ...");           
    }

其次,在你ConfigureServices方法的开头,这样配置DbContext:

services.AddDbContext<MyContext>();

【讨论】:

  • 确实有效,谢谢!有没有解释为什么我的代码不起作用?因为我是在微软的网站上找到的 :-)
  • 不知道.. 我想“dbcontext 黑盒”调用了您的无参数构造函数。我的方式每次都强制配置,不仅在应用程序启动时...您能否将答案标记为已接受? :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 2021-05-04
  • 2016-11-15
  • 2018-11-12
  • 2018-12-15
相关资源
最近更新 更多