【问题标题】:DbContextOptionsBuilder could not be found ASP.NET Core 1.1 Web API project找不到 DbContextOptionsBuilder ASP.NET Core 1.1 Web API 项目
【发布时间】:2017-08-15 07:27:07
【问题描述】:

我正在尝试将 Entity Framework Core 1.1 添加到我的项目中,并使用连接字符串从 Azure 数据库中获取我的数据。我尝试阅读https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-entity-framework-core-1-1/ 上的更改,他们说我应该在我的 Startup.cs 文件中执行此操作以连接到数据库:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder
        .UseSqlServer(
            "connection string",
            options => options.EnableRetryOnFailure());
}

但这只是给我一个错误:

找不到类型或命名空间“DbContextOptionsBuilder”...

'Startup.OnConfiguring(DbContextOptionsBuilder): 没有合适的方法 发现要覆盖。

我可以添加 using Microsoft.EntityFrameworkCore; 这将使 DbContextOptionsBuilder 的错误消失,但随后 .UseSqlServer 出现错误:

“DbContextOptionsBuilder”不包含对 'UseSqlServer' 并且没有扩展方法...

这是我的 dotnet.csproj 文件

如何解决这个问题,以便我可以连接到 Azure 上的 Db 并获取数据?

提前致谢!

【问题讨论】:

  • 你能展示你的 project.json 内容和你的 DbContext 类吗?
  • 没有 project.json 文件。你在想哪一个@H。哈兹尔?由于这是放在我的 Startup.cs 中的,因此没有 DbContext 类。我必须重组它吗?

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


【解决方案1】:

您所指的博客文章可能有点令人困惑。他们正在谈论您的DbContext Startup 中某个位置的 OnConfiguring 方法。您的示例混合了两个世界(您希望 DbContext OnConfiguring 方法位于 Startup 中)。

首先添加包Microsoft.EntityFrameworkCore.SqlServer

假设你想使用 Startup.cs,它看起来像这样:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<YourDbContext>(options =>
        {
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
        });
    }

您可以在 appsettings.json 中定义您的连接字符串:

{
    "ConnectionStrings": {
        "DefaultConnection": "Data Source=.;Database=<your db>;User Id=;Password="
    }
}

【讨论】:

  • 非常感谢您的回复! options.UseSqlServer 部分仍然出现错误。我已经添加了包,请问如何解决这个问题?
  • 'DbContextOptionsBuilder' 不包含'UseSqlServer' 的定义并且没有扩展方法'UseSqlServer' 可以找到接受'DbContextOptionsBuilder' 类型的第一个参数..
  • 这里不需要 DbContextOptionsBuilder。您是否将上述 ConfigureServices 方法复制到您的 Startup 中?它没有 DbContextOptionsBuilder,因此请删除所有引用它的旧代码。
  • 现在开始工作了!现在,如果您不介意,我如何将一些数据从我的数据库打印到网站?如果你有一个链接或类似的东西:)
  • 我这样做了,但从未分配过我的控制器数据。猜猜这是错误的做法。 imgur.com/a/kvTq5
猜你喜欢
  • 2017-10-11
  • 2020-06-22
  • 2019-07-11
  • 2014-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
相关资源
最近更新 更多