質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

11054閲覧

.NET Core MVC のチュートリアルでスキャフォールディングに失敗する

退会済みユーザー

退会済みユーザー

総合スコア0

Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2021/09/14 14:51

編集2021/09/14 23:05

C#を学習し始めて半年程度です。よろしくお願いいたします。

前提・実現したいこと

・スキャフォールディングで失敗する原因を突き止めたい。

.NET Core MVCの公式チュートリアルを進めています。(VisualStudio2019 verは補足に記載しています。)
Microsoft .NET Core公式チュートリアル

上記のページの「パート4 モデルを追加する」を進めている際、「EntityFrameworkを使用したビューがあるMVCコントローラー」の追加でスキャフォールディングされる際、
以下のようなエラーが発生し、スキャフォールディングが失敗します。

発生している問題・エラーメッセージ

選択したコードジェネレーターを実行中にエラーが発生しました: "To scaffold, install the following Entity Framework core packages and try again Microsoft.EntityFrameworkCore.SqlServer"

イメージ説明

試したこと

①package.reference→package.configに設定を変更 ...特に変化なく、同様のエラー発生

②nuggetのキャッシュを削除してスキャフォールディング ...特に変化なく、同様のエラー発生

エラーメッセージに書かれている通り、Microsoft.EntityFrameworkCore.SqlServer をインストールして再度、スキャフォールディングしましたが、以下のようなエラーが発生しました。
(再度スキャフォールディング時はソリューションごと新規作成して実行しているため、依存関係が残っていることはないはずです。)

発生している問題・エラーメッセージ2

選択したコードジェネレーターを実行中にエラーが発生しました: "'Method''Create' in type 'Microsoft.EntityFrameworkCore.SqlServer.Query.Internal.SqlServerSqlTranslatingExpressionVisitorFactory' from assembly 'Microsoft.EntityFrameworkCore.SqlServer, Version=3.1.15.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation."

イメージ説明

補足情報(FW/ツールのバージョンなど)

Microsoft Visual Studio Community 2019
VisualStudioVersion = 16.10.3
Microsoft .NET Framework Version 4.8.04084

インストールされている製品

.NET Core Debugging with WSL 2 - 1.0
ASP.NET and Web Tools 2019 - 16.10.526.50910
ASP.NET Web Frameworks and Tools 2019 - 16.10.526.50910
Azure App Service Tools v3.0.0 - 16.10.526.50910
Razor(ASP.NET Core) - 16.1.0.2122504
SQL Server Data Tools - 16.0.62106.24090

Package

Microsoft.EntityFrameworkCore.Design5.0.9
Microsoft.EntityFrameworkCore.SqlServer3.1.15
Microsoft.EntityFrameworkCore.Tools3.1.15
Microsoft.VisualStudio.Web.CodeGeneration.Design3.1.5(スキャフォールディング時に自動で追加されました)

最後に、、、

・どうやら整合性の問題が疑わしいのですが、どのようにVersion調整をするのかなどの知識もなく、困り果てております。
・不足している情報などあれば、追加しますので、コメントお待ちしております。
・どんな些細なことでも良いので、助けていただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/09/14 21:41

ASP.NET のタグを付けてください。 質問にリンクを張ったチュートリアル (プロジェクトの作成) とパート 4 以外に何かしましたか? ソリューション/プロジェクトをゼロから作り直してみると言うことはやってみましたか?
退会済みユーザー

退会済みユーザー

2021/09/14 23:12

SurferOnWwwさん、ありがとうございます。 チュートリアル以外の操作はしていないです。 ただ、過去にWinFormとASP .NET MVC、Xamarinを勉強した際に、知識なく設定を触っている可能性はゼロではないです。(記憶に残っている大きな設定変更はpackage configをpackage referenceにしたことぐらいですが...試したことに書いた通り、同様のエラーが発生するままでした) ソリューション/プロジェクトはスキャフォールディングが失敗するたびにゼロから作り直しています。(ですが、同様のエラーで失敗してしまいます。)
退会済みユーザー

退会済みユーザー

2021/09/15 00:17

> 'Microsoft.EntityFrameworkCore.SqlServer, Version=3.1.15.0 最新版のバージョンは 5.0.10 のはずですが?
退会済みユーザー

退会済みユーザー

2021/09/15 01:20

自分の環境で、チュートリアルの通りに作ってみましたが、全く問題なく期待通り動くアプリが作れます。質問者さんのケースで問題が出たのは、質問者さんの環境固有の問題(ファイルが壊れているとか)がなければ、NuGet パッケージの選び方の問題ではないかと思います。 後で回答欄に自分はどのようにしたかを書いておきます。
guest

回答1

0

ベストアンサー

自分の環境で、チュートリアルの通りに作ってみましたが、全く問題なく期待通り動くアプリが作れます。以下の画像は作ったアプリを実行して、Create New でデータを SQL Server に入力し、内容一覧を表示したところです。

イメージ説明

質問者さんのケースで問題が出たのは、質問者さんの環境固有の問題(ファイルが壊れているとか)がなければ、NuGet パッケージの選び方の問題ではないかと思います。

自分はどのようにしたかを以下に書いておきます。NuGet パッケージのインストールのところに注意してください。

自分の環境は、Windows 10 64-bit Pro 21H1, Visual Studio Community 2019 16.11.3, SDK バージョン 5.0.401, ランタイム Microsoft.AspNetCore.App 5.0.10 です。

(1) 質問者さんが参考にしたチュートリアル「ASP.NET Core MVC の概要」の通りにソリューション/プロジェクトを作成。

(2) パート 4(URL 下記)に進んでモデルクラスを作成。

パート 4、ASP.NET Core MVC アプリにモデルを追加する
https://docs.microsoft.com/ja-jp/aspnet/core/tutorials/first-mvc-app/adding-model?view=aspnetcore-5.0&tabs=visual-studio

(3) NuGet パッケージを追加。ここはチュートリアルと違って以下のように[ソリューションの NuGet パッケージの管理]で行う。

イメージ説明

Microsoft.EntityFrameworkCore.Design の最新版(現時点では 5.0.10)をインストール。

イメージ説明

(4) チュートリアルの通りスキャフォールディングを実行。

イメージ説明

追加で必要な NuGet パッケージは自動的に追加される。(自動的に追加される Tools のバージョンが古いので警告が出るが無視して可)

イメージ説明

その他、チュートリアルに書いてある通り、コンテキストクラスの生成、接続文字列の設定、Startup.cs への登録、CRUD 操作に必要な Controller / View が自動生成される。

(5) チュートリアルの通り Migration 操作を行い DB を生成。

この時点では SQL Server DB にはテーブルは生成されているが中身はカラなので、アプリを実行してデータを 2 件追加し、追加したデータを表示したのが一番上の画像です。

投稿2021/09/15 02:20

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/09/15 02:58

SurferOnWwwさん、回答ありがとうございます。 頂いた内容ですが、「ソリューションのNuGetパッケージの管理」からの実行はすでに試しており、同様のエラーが発生しておりました。「試したこと」の記載に漏れており、申し訳ございません。 しかし、 >Microsoft.EntityFrameworkCore.SqlServer, Version=3.1.15.0 >最新版のバージョンは 5.0.10 のはずですが? この回答から、プロジェクト作成時のターゲットフレームワークが.NET 5.0(現在)ではなく、.NET Core3.1(長期的なサポート)になってしまっていることに気付けました。 そこで、 .NET 5.0に直してチュートリアルを進めたところ、問題なくスキャフォールディング出来ました。 .NET5.0は名前からASP.NET(WindowsOS専用のもの)の名残りか何かかと思っており、.NET Core3.1を使っておりました。 ともかく、解決出来ました。 本当にありがとうございました。 ベストアンサーさせて頂きます。
退会済みユーザー

退会済みユーザー

2021/09/15 03:18

チュートリアルは .NET 5.0 で作るように明示してあります。違うことをしたのならそこは最初の質問にその旨書かないと・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問