web-dev-qa-db-ja.com

Entity Frameworkコア:DbContextOptionsBuilderには「usesqlserver」の定義が含まれておらず、拡張メソッド「usesqlserver」が含まれていません

私はEFコアが初めてであり、asp.netコアプロジェクトで動作するようにしようとしています。

Configの接続文字列を使用するようにdbcontextを構成しようとすると、startup.csで上記のエラーが発生します。私はこのチュートリアルに従っています: https://docs.Microsoft.com/en-us/aspnet/core/data/ef-mvc/intro

Startup.csの問題のあるコード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.SpaServices.Webpack;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
using tracV2.models;
using tracV2.data;

namespace tracV2
{
    public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();

            services.AddSingleton<IConfiguration>(Configuration);

            string conn = Configuration.GetConnectionString("optimumDB");

            services.AddDbContext<tracContext>(options => options.usesqlserver(conn));
        }

usesqlserverメソッドは、コンテキストに直接配置すると認識されます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;

namespace tracV2.data
{
    public class tracContext : DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("myrealconnectionstring");
        }

私のすべてのオンライン検索は、欠落している参照を指し示していますが、どの参照が欠落しているかを見つけることができないようです(画像を参照). references

どんな助けでも大歓迎です、

ありがとう

54
Maxime Laflamme

これはプロジェクトシステムの既知の問題です。 dotnet/project-system#1741 を参照してください

9
bricelam

Microsoft.EntityFrameworkCore.SqlServer NuGetパッケージをインストールします。

Microsoft.EntityFrameworkCore.SqlServer

PM > Install-Package Microsoft.EntityFrameworkCore.SqlServer

次に、

   services.AddDbContext<AspDbContext>(options =>
       options.UseSqlServer(config.GetConnectionString("optimumDB")));

Updateusing Microsoft.EntityFrameworkCore;名前空間の追加を忘れないでください

134
Win

using Microsoft.EntityFrameworkCore;を追加

手動で問題を解決しました

ここにあることがわかりました

57
Victor.Uduak

NuGetパッケージの下にインストールすると問題が解決します

Microsoft.EntityFrameworkCore.SqlServer

インストールパッケージMicrosoft.EntityFrameworkCore.SqlServer

20
Phani K

Visual Studio Codeを使用していました。

1)バージョン番号を指定して、パッケージ「Microsoft.EntityFrameworkCore.SqlServer」のインストールを試みます。

VS Code

「dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1」

Visual Studio:-

「インストールパッケージMicrosoft.EntityFrameworkCore.SqlServer -v 1.1.1」

リンクを参照してください ' パッケージ' Microsoft.EntityFrameworkCore.SqlServer 'は、プロジェクト内の' all 'フレームワークと互換性がありません 'してください。

2)次に、Startup.csファイルにネームスペース「sing Microsoft.EntityFrameworkCore;」を手動で追加します。

以下のリンクを参照してください https://github.com/aspnet/EntityFramework/issues/7891

3)「Microsoft.EntityFrameworkCore.SqlServer.Design」の依存関係の問題が発生した場合、「Package」Microsoft.EntityFrameworkCore.Design」は「all」と互換性がありません'プロジェクト内のフレームワーク "、以下のコマンドを実行する必要があります。

VSコード:-

dotnet addパッケージMicrosoft.EntityFrameworkCore.Design -v 1.1

Visual Studio

インストールパッケージMicrosoft.EntityFrameworkCore.Design -v 1.1

7
Krishna

プロジェクト-> ManageNugetPackages->参照->「Microsoft.EntityFrameworkCore.SqlServer」を検索し、インストールまたは更新します。

6
Bugay Sarikaya

以下の手順に従ってください。

Entity Framework CoreのEntity Framework Core DesignとSQL Serverデータベースプロバイダーをインストールします。

dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Entity Framework Coreのインポート:

using Microsoft.EntityFrameworkCore;

そして、DbContextを構成します。

var connectionString = Configuration.GetConnectionString("myDb");
services.AddDbContext<MyDbContext>(options => 
    options.UseSqlServer(connectionString)
);
5
Bruno Pereira

最初にInstall-Package Microsoft.EntityFrameworkCore.SqlServerを追加します

次に、.csファイルにusing Microsoft.EntityFrameworkCore;を追加します

最後にこれをコアに追加しますStartup.cs

  public void ConfigureServices(IServiceCollection services)
        {
            services.AddEntityFrameworkSqlServer().AddDbContext<ApplicationContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));
        }
2
Jaydeep Shil

これは、Microsoft.EntityFrameworkCore.SqlServer.Designへのプロジェクト参照を追加することで解決できると思います

Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

Microsoft.EntityFrameworkCore.SqlServerはプロジェクトに直接インストールされませんでしたが、.Designパッケージはそれを前提条件としてインストールします。

2
Andrew S

私は簡単にこれを回避しました:

SqlServerDbContextOptionsExtensionsを問題のクラスに追加します解決SqlServerDbContextOptionsExtensions

これにより問題が修正されます。デフォルトで参照が欠落している必要があります。

1
Baz G

この問題を解決できない場合:NuGetを使用してインストールします:Microsoft.EntityFrameworkCore.Proxies

この問題は、EFCoreでのCastle Proxyの使用に関連しています。

1
Vima91

Sqliteの場合にこの問題に直面している場合は、

。これはSqliteのバージョンの問題だと思いますが、このバージョンの SqLite を使用していたときに同じ問題が発生しました

バージョン2.2.4

enter image description here

バージョンを確認した後 ここenter image description here バージョンを変更してから動作しました。

enter image description here

これを使用した後エラーなし

バージョン2.1.2

enter image description here

1

非常に多くの回答がありますが、誰もこれに言及していません Microsoft.EntityFrameworkCore.InMemory package!

このパッケージへの参照を追加します:<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.2" />準備が整いました。

0
pso

Asp.netコアバージョン2.1の場合、次のパッケージを追加して問題を修正してください。 (少なくとも、これはSQLiteを使用して問題を修正します)

dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Design

エンティティフレームワークコアでSQLiteを使用したドキュメントのリファレンスを次に示します。 https://docs.Microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite

0
hmota

私はラインを使用しなければなりませんでした

 services.AddEntityFrameworkSqlite().AddDbContext<MovieContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));

startup.csのConfigureServicesメソッドで

0
Blain Ellis

https://github.com/aspnet/Docs/tree/master/aspnetcore/tutorials/first-web-api/sample/TodoApi からTodoApi.csprojに次のコードをコピーすると、私。

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>

</Project>

Microsoft.AspNetCore.Allは過剰かもしれませんが、EntityFrameworkCoreが含まれています

0
kiwi7