web-dev-qa-db-ja.com

スタートアッププロジェクトがMicrosoft.EntityFrameworkCore.Designを参照していません

私のソリューションには2つのプロジェクトがあり、Entity Framework Coreがインストールされたプロジェクトがあります。

enter image description here

そして、他のASP.NET Web APIプロジェクトには、次のパッケージがあります。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.5.0.2" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.4.0" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.Web" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.WindowsServer" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.5.1" targetFramework="net461" />
  <package id="Microsoft.AspNet.Mvc" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.Razor" version="3.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.TelemetryCorrelation" version="1.0.0" targetFramework="net461" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.HelpPage" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.4" targetFramework="net461" />
  <package id="Microsoft.AspNet.WebPages" version="3.2.4" targetFramework="net461" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.0" targetFramework="net461" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="11.0.1" targetFramework="net461" />
  <package id="System.Diagnostics.DiagnosticSource" version="4.4.1" targetFramework="net461" />
  <package id="WebGrease" version="1.6.0" targetFramework="net461" />
</packages>

PMCでAdd-Migrationを実行すると:

スタートアッププロジェクト 'API'はMicrosoft.EntityFrameworkCore.Designを参照していません。このパッケージは、Entity Framework Core Toolsが機能するために必要です。スタートアッププロジェクトが正しいことを確認し、パッケージをインストールして、再試行してください。

Microsoft.EntityFrameworkCore.Designを、すべてのエンティティを含むデータプロジェクトではなく、スタートアッププロジェクトにインストールしましたが、機能します。これは、プロジェクトのセットアップ方法ですか。

15
el_pup_le

私はここで解決策を見つけました: http://obscureproblemsandgotchas.com/development/c/dotnet-core-ef-migration-not-working/

簡単に言うと、csprojファイルを編集し、次のエントリにPropertyGroupセクションを追加します。

<GenerateRuntimeConfigurationFiles>True</GenerateRuntimeConfigurationFiles>
13
astrowalker

複数のプロジェクトがありますか?はいの場合は、ソリューションエクスプローラーからホストプロジェクトをスタートアッププロジェクトとして作成し、PMCでプロジェクトをデフォルト(DBContextを持つプロジェクト)に設定する必要があります。次に、Add-Migrationコマンドを実行します。

8
vivek nuna

Visual Studioが.NET Frameworkの旧式のエンティティフレームワークではなくエンティティフレームワークコアを使用するようにデフォルト設定したため、このエラーが発生しました:エンティティフレームワーク6。これが私の解決策でした。

EntityFramework\Update-Database

または、バージョンを明示的に参照します。

EntityFramework6\Update-Database

また、パッケージマネージャーコンソールで適切なプロジェクトが選択されていることも確認する価値があります。それは半分の時間で他のプロジェクトに忍び込むのが好きです!

6
noelicus

「 'プロジェクト名'は、スタートアッププロジェクトMicrosoft.EntityFrameworkCore.Designを参照していません。このパッケージは、Entity Framework Core Toolsが機能するために必要です。スタートアッププロジェクトが正しいことを確認し、パッケージをインストールして、再試行してください。」

このエラーが発生した場合は、プロジェクトで 'Build> Clean Solution'を試してから、コマンドを再実行してください。

これは私のプロジェクトで機能しました。または、 ドキュメント を確認することもできます。

プロジェクトで.Net Core 3.1バージョンを使用しています。

2

エンティティを含むプロジェクトをスタートアッププロジェクトとして設定し、scaffoldingコマンドを実行します。それは私のために働いた。後でスタートアッププロジェクトを元に戻すように設定することを忘れないでください。

0
Shivanka

スタートアッププロジェクトとしてWebプロジェクトを再度設定しようとすると、この警告が表示されます。 (Webプロジェクトを右クリック> [スタートアッププロジェクトに設定])

0
Anuj Shukla

サービスにEF参照を追加せずに移行を行う場合は、データアクセスを持つライブラリにDbContextのインスタンスを構築する方法が必要です。これを行うには、IDesignTimeDbContextFactoryを実装します。次に例を示します。

public class MyContextFactory : IDesignTimeDbContextFactory<MyContext>
{
    public MyContext CreateDbContext(string[] args)
    {
        var optionsBuilder = new DbContextOptionsBuilder<MyContext>();
        optionsBuilder.UseSqlServer("Data Source=MyDatabase");

        return new MyContext(optionsBuilder.Options);
    }
}
0