无法找到DbContextOptionsBuilder ASP.NET Core 1.1 Web API项目

时间:2017-03-22 23:01:59

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

我正在尝试将Entity Framework Core 1.1添加到我的项目中,并使用连接String从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):没有合适的方法   发现要覆盖。

我可以使用Microsoft.EntityFrameworkCore; 添加,这会使DbContextOptionsBuilder的错误消失,但 .UseSqlServer 会出错:

  

'DbContextOptionsBuilder'不包含。的定义   'UseSqlServer',没有扩展方法...

这是我的dotnet.csproj文件 dotnet.csproj

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

您所指的博客文章可能有点令人困惑。他们在谈论你的 DbContext 的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="
    }
}