web-dev-qa-db-ja.com

「DbContextOptionsBuilder」には「UseSqlServer」の定義が含まれていません

C#を使用し、.NET Coreをターゲットにして、VS 2015 Pro(Update 3)でWeb APIを作成しようとしています。

私はこのチュートリアルに従っています: https://docs.efproject.net/en/latest/platforms/aspnetcore/new-db.html#install-entity-framework 。ただし、SQL ServerデータベースではなくMySQLデータベースに接続しています-どれだけの違いがあるのか​​わかりません...

とにかく、チュートリアルでは、「依存関係注入を使用してコンテキストを登録する」が必要なので、次の行をConfigureServicesセクションに追加する必要がありますStartup.csファイル:

var connection = Configuration.GetConnectionString("DefaultConnection");
services.AddDbContext< Models.PropWorxContext > (options => options.UseSqlServer(connection));;

ただし、VSでは次のエラーが発生します。

エラーCS1061 'DbContextOptionsBuilder'に 'UseSqlServer'の定義が含まれておらず、タイプ 'DbContextOptionsBuilder'の最初の引数を受け入れる拡張メソッド 'UseSqlServer'が見つかりません(usingディレクティブまたはアセンブリがありません)参照?)

何かアイデアはありますか?

Startup.csファイル全体は次のようになります。

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

namespace PropWorxAPI
{
    public class Startup
    {
        public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();
            Configuration = builder.Build();
        }

        public IConfigurationRoot Configuration { get; }

        // 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();

            var connection = Configuration.GetConnectionString("DefaultConnection");
            services.AddDbContext< Models.PropWorxContext > (options => options.UseSqlServer(connection));
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            app.UseMvc();
        }
    }
}

また、パッケージマネージャーを使用してMySQLパッケージを追加したので、project.jsonファイルに次のエントリが含まれています。

*"MySql.Data.EntityFrameworkCore": "7.0.6-IR31"*

私が一日中それを理解しようと費やしてきたので、私がどこが間違っているのかについてのヒントは大歓迎です:(ありがとう...

10

SqlServerはMySqlではなくMicrosoft Sql Serverです。SqlServerを使用するには、パッケージ "Microsoft.EntityFrameworkCore.SqlServer": "1.0。*"が必要です。

MySqlを使用する場合、オプションがあります。UseMySql

これを見てください 詳細はチュートリアル

21
Joe Audette

データベースにSQL Serverを使用してプロジェクトを設定しているときにも、このエラーが発生しました。私の場合、usingステートメントを手動で追加する必要がありました-"using Microsoft.EntityFrameworkCore;"。 。少し当たり前のように聞こえますが、Visual Studioがクイックアクションを介してusingステートメントを追加していなかったので、それは私を驚かせました。

12
Frank Cannon

「Microsoft.EntityFrameworkCore.SqlServer」パッケージをすでにインストールしていて、Ctrl + Spaceを使用してもオプションが表示されない場合は、「using Microsoft.EntityFrameworkCore」を追加すると手動で問題が解決しました。

プロジェクトフォルダーで、コマンドラインに次のように入力します。

dotnet add package Pomelo.EntityFrameworkCore.MySql -v 2.1.2
0
user10930337

Sqlite/Sql Serverコンパクトツールボックスをインストールし、データベースが作成されていない場合は作成し、appsettings.jsonの接続文字列を変更します

0
Moaz Salem

パッケージがありません。これは私にとってはうまくいきました。 tools-NUget package-package manager-copy貼り付け後の貼り付け:

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

0
Bnezes