UdemyのASP.NET MVCのMosh Hamedaniコースの1つを続けています。
コードファースト(Entity Framework)を使用してデータベースを設計している間、私は1つのエラーに出てきました。
最初に、の誤差がありました(== --- ==) "Assembly"no dbcontextが見つかりました。この問題を解決した後、別の問題はどこからでも急増した。
以下の画像には、移行の追加中に見つかったエラーが表示されます。私はすでに同じエラーを検索しましたが無駄に検索しました。私は過去2時間に苦しんでいますが、今まで何も解決されません。
'vidly_context'と型のオブジェクトを作成できません。設計時にサポートされているさまざまなパターンについては、 https://go.microsoft.com/fwlink/?LinkId=851728
私は、MVCプロジェクトとBlazorプロジェクトの両方を含む.NET CORE 3ソリューションのEFコアコードの最初の移行時にこの問題になりました。
ソリューションのスタートアッププロジェクトがBlazorプロジェクトに設定されている場合は、add-migration
を使用するときにエラーが発生しますが、MVCプロジェクトに起動プロジェクトが設定されている場合はできません。
読み取りから エラーメッセージでリンクされているドキュメントページ ともstartup.csファイル内のコードの比較と両方のプロジェクトのコードの比較は、なぜなぜそれがあるが一時的にスタートアッププロジェクトをMVCに切り替えるのはわかりません。プロジェクトは私のためにそれを修正します。
1 - Webプロジェクトを必ずスタートアッププロジェクトとして設定を設定してください。
2 - Package Manager Console、データアクセスレイヤー(存在する場合)をのデフォルトプロジェクトに設定します。
3-次にコマンドを再実行してください
StartupプロジェクトがASP.NETコアWebホストまたは.NET CORE Genericホストを使用している場合、ツールはアプリケーションのサービスプロバイダからDBContextオブジェクトを取得しようとします。そうでなければ、デザイン時のファクトリからDBContextを作成できます( https://docs.microsoft.com/es-es/ef/core/miscellanewhious/cli/dbContextcreation )。
私の場合は、私はしました appsettings.development.json. ファイル必須がファイルを作成しませんでした。環境固有の設定ファイルを作成していない場合は、それを次のように設定してください。 オプション:true.
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{environment.EnvironmentName}.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
_
しかし、エラーが注意することが重要です 必ずしもDBContextとその構成に関連しているとは限りません。。アプリケーションの起動時の他のエラーであれば、EFツーリングが移行を実行できるようにアプリが起動しなくなる可能性があります。プロジェクトの起動時に他のエラーを見つけるメカニズムとして、起動のさまざまな行にコンソールメッセージを追加できます。移行しようとしている間にコンソールを使用してConsoleを使用してAppSetting値を検査することもできます。
Console.WriteLine("I can see this because the app was able to proceed this far.");
_
これは、ASP.NETコアで遭遇したことがある最も無意味な問題の1つです。私はあなたが言及したコースについては実際にはわかりませんが、あなたのアプリケーションがPresention Layerがデータ層から分離されている場所のようなものと同じであれば。 Presentation LayerのMicrosoft.entityFrameworkcore.Designの最新バージョンをインストールしてください。必要とされ、エラーメッセージはそれについて何も言わない。
私は同じ問題に遭遇しました。 OPは、それらがstartup.csにコードを追加する必要があると言った。
https://go.microsoft.com/fwlink/?LinkId=851728 次のコードサンプルがあります。
public class Startup
{
public void ConfigureServices(IServiceCollection services)
=> services.AddDbContext<ApplicationDbContext>();
}
_
My ConfigureServicesメソッドでは、次のコードが見つかりませんでした。
services.AddDbContext<ApplicationDbContext>();
_
データベースのコンテキストにこれを追加した後、問題は解決されました。