私は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
どんな助けでも大歓迎です、
ありがとう
これはプロジェクトシステムの既知の問題です。 dotnet/project-system#1741 を参照してください
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;
名前空間の追加を忘れないでください
NuGetパッケージの下にインストールすると問題が解決します
Microsoft.EntityFrameworkCore.SqlServer
インストールパッケージMicrosoft.EntityFrameworkCore.SqlServer
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
プロジェクト-> ManageNugetPackages->参照->「Microsoft.EntityFrameworkCore.SqlServer」を検索し、インストールまたは更新します。
以下の手順に従ってください。
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)
);
最初に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")));
}
これは、Microsoft.EntityFrameworkCore.SqlServer.Designへのプロジェクト参照を追加することで解決できると思います
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design
Microsoft.EntityFrameworkCore.SqlServerはプロジェクトに直接インストールされませんでしたが、.Designパッケージはそれを前提条件としてインストールします。
私は簡単にこれを回避しました:
SqlServerDbContextOptionsExtensions
を問題のクラスに追加します解決SqlServerDbContextOptionsExtensions
これにより問題が修正されます。デフォルトで参照が欠落している必要があります。
この問題を解決できない場合:NuGetを使用してインストールします:Microsoft.EntityFrameworkCore.Proxies
この問題は、EFCoreでのCastle Proxyの使用に関連しています。
非常に多くの回答がありますが、誰もこれに言及していません Microsoft.EntityFrameworkCore.InMemory package!
このパッケージへの参照を追加します:<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.2" />
準備が整いました。
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
私はラインを使用しなければなりませんでした
services.AddEntityFrameworkSqlite().AddDbContext<MovieContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));
startup.csのConfigureServicesメソッドで
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が含まれています