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"*
私が一日中それを理解しようと費やしてきたので、私がどこが間違っているのかについてのヒントは大歓迎です:(ありがとう...
SqlServerはMySqlではなくMicrosoft Sql Serverです。SqlServerを使用するには、パッケージ "Microsoft.EntityFrameworkCore.SqlServer": "1.0。*"が必要です。
MySqlを使用する場合、オプションがあります。UseMySql
これを見てください 詳細はチュートリアル
データベースにSQL Serverを使用してプロジェクトを設定しているときにも、このエラーが発生しました。私の場合、usingステートメントを手動で追加する必要がありました-"using Microsoft.EntityFrameworkCore;"。 。少し当たり前のように聞こえますが、Visual Studioがクイックアクションを介してusingステートメントを追加していなかったので、それは私を驚かせました。
「Microsoft.EntityFrameworkCore.SqlServer」パッケージをすでにインストールしていて、Ctrl + Spaceを使用してもオプションが表示されない場合は、「using Microsoft.EntityFrameworkCore」を追加すると手動で問題が解決しました。
プロジェクトフォルダーで、コマンドラインに次のように入力します。
dotnet add package Pomelo.EntityFrameworkCore.MySql -v 2.1.2
Sqlite/Sql Serverコンパクトツールボックスをインストールし、データベースが作成されていない場合は作成し、appsettings.jsonの接続文字列を変更します
パッケージがありません。これは私にとってはうまくいきました。 tools-NUget package-package manager-copy貼り付け後の貼り付け:
インストールパッケージMicrosoft.EntityFrameworkCore.SqlServer -Version 3.1.1