無法找到DbContextOptionsBuilder ASP.NET Core 1.1 Web API項目

.net-core asp.net-core azure c# 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/上閱讀更改,他們說,我應該在我的啟動中執行此操作.cs文件連接到DB:

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並獲取數據?

提前致謝!

一般承認的答案

你所指的博客文章可能有點令人困惑。他們談論的是你的DbContext的OnConfiguring方法或者你的Startup中的某個地方。您的示例是混合兩個世界(您希望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="
    }
}


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow