web-dev-qa-db-ja.com

表示されていないコントローラーモデルクラスの追加

Model First DBContextモデルを作成することができました(通常のObjectContext派生モデルになる前)。

ひどく今、私のVSは「コントローラーの追加」のモデル選択リストに私のクラスを表示していません。私自身のスタッフを除いて、多かれ少なかれ外部のすべてがここに示されています。はい-コードをコンパイルしました。コードはエラーなしでコンパイルされ、VSを複数回再起動しました。一体何が起こっているのか見当がつかない。

データコンテキストクラスセレクターでも同じです。

クラスを手動で設定しても機能しません。 Addは常に、リストから選択する必要があると文句を言います。

VSはリストを埋めるためのデータをどこで取得していますか?

フレームワーク:MVC4、VS2010、EF4.3.1

12
Obiwan007

同じ問題がありました。プロジェクトをビルドするだけでは、モデルクラスが欠落しているという問題は解決されないことがわかりました。しかし、プロジェクトを再構築すると、すぐに解決しました。

12
poeticGeek

それが機能した理由は、それを別のプロジェクトに入れることによって、あなたがそれを「構築」し、それからそれが現れたからです。最初のプロジェクトをビルドしてからコントローラーbamを追加しようとすると、そこにあります。

3
Joshua Schipper

足場用に表示されていない「コントローラの追加」モデルクラス

使用環境:C#Visual Studio2013を使用したASP.NETMVC5

解決策1:ソリューション名がプロジェクト名と同じである場合は、ソリューションをクリーンアップして、ソリューションをビルドします。それが動作します。

解決策2:ソリューション名がプロジェクト名と異なる場合は、以下の手順を確認してください。

(i)モデルクラスの名前空間を次のように確認します

namespace SolutionName.ProjectName.Models
{ ...}

ソリューション名が「WGT」でプロジェクト名が「MS」であるとすると、モデルクラスはユーザーが

namespace WGT.MS.Models
{ public class User{...}}

(ii)この後、解決策を明確にします。

(iii)ビルドソリューション

きっとうまくいくでしょう。多くの時間を費やした後、この解決策を見つけました。これは実用的で実装されたソリューションです。

3
Varinder Hatta

同じ問題がありました。それを私が直した。

  • 別のクラスライブラリプロジェクトでEFを分離します。
  • メインのWebプロジェクトに参照を追加します。
  • webプロジェクトの構成ファイルに接続文字列を追加します。
2
atik sarker

ついに私は足場を再び機能させることができました。 model.edmxをメインプロジェクトからリファクタリングしました。テンプレートを作成すると、この新しいモデルプロジェクトでモデルクラスが生成されます。モデルプロジェクトをメインプロジェクトに追加すると、クラスがコントローラーモデル選択ボックスに再び表示されます。分離せずに完全に新しいセットアップソリューションで機能するように見えるので奇妙です...

1
Obiwan007

おそらく関連している: 私のクラスを表示していないビューモデルクラスのドロップダウンを追加

コントローラーを追加するときにこれに対する解決策を探していましたが、これに到達する前に前述の投稿に到達しました。 AssemblyInfo.csを削除し、プロジェクトのプロパティを設定すると、うまくいきました(VS2010の場合)。

1
Parag Doke

同じ問題が発生しました。パッケージ(asp.net mvc、およびEF)の互換性を確認し、すべてのnugetパッケージをアップグレードしてください。プロジェクトをクリーンアップして再構築します。それは私にとってはうまくいきます。

http://forums.asp.net/t/1791616.aspx?Can+t+create+new+controller+No+model+classes+are+available+

1
racsonp

そもそも別のプロジェクトのEFモデルでも同じ問題がありました。

すべてを再構築しても何も起こりませんでしたが、VisualStudioの新しいインスタンスにリロードするだけで修正されました。

1
Gone Coding

私はちょうど働いていたプロジェクトでこの問題を経験しました。 EFまたはMVCの更新はなく、「モデルクラスがありません...」というメッセージが表示され始めました。プロジェクトをバックアップし、HDから削除して、ソース管理(この場合はSVN)から最新バージョンを取得しました。プロジェクトを再構築したところ、魔法のように再び機能するようになりました。

VS 2012 EF 5.0 .NET 4.5 MVC 4.0

0
Roy Owen

私は1つの特定のモデルでこれと同じ問題を抱えていました。 EFCoreで.NetCore2.xを使用していました。それは、Microsoft.AspNetCore.Identity.IdentityUserを継承するクラスを継承していたためであることが判明しました。 EF Coreは、そのモデルからの足場を許可しません。基本クラスからIdentityUserの継承を削除すると、モデルがEF newControllerのドロップダウンに表示されました。

0
slasky

私が含めたことを確認したにもかかわらず、私は同様の問題を抱えていました

using ProjectName.Models; 

コントローラファイルの先頭にあります。構築/再構築は私にとってはうまくいきませんでした。また、Visual Studioのすべてのインスタンスを閉じて、プロジェクトを再開することもしませんでした。

問題は、TFS(MicrosoftのTeam Foundation Server)を使用していることかもしれないと思いました。最初にモデルを作成し、次にビューフォルダー内にコントローラーを作成してから、そのコントローラー(ファイル)をコントローラーフォルダーに移動したため、問題が発生しました。

私の解決策は、モデルを作成し、コントローラーコードを別の場所にコピーし、コントローラーを削除し、ソリューションを再構築/ビルドすることでした。次に、新しいコントローラーを作成し、正しいコードをコピーして戻しました。そうすると、モデルクラスが認識されました。

0
user5138047

この問題は、プロジェクトが別のプロジェクトを参照している場合に発生する可能性があります。これは推移的なプロジェクト参照と呼ばれ、さまざまな方法で現れます。そのうちの1つがこれです。場合によっては、これを解決するために、プロジェクトを直接参照する必要があり、推移的に参照する必要はありません。

例:プロジェクトA、プロジェクトB、プロジェクトC

プロジェクトBにはCへの参照があるため、repos/b/bin/debugにはb.dllとc.dllがあります。プロジェクトAには両方が必要なので、b/bin/debugフォルダーにあるB.dllとC.dllへの参照を指定します。 。これを行うと、c.dllのモデルは表示されませんが、b.dllモデルは表示されます。

修正/回避策:repos/b/bin/debug /b.dllおよびrepos/c/bin/debug /c.dllを直接参照する

0
Rodger

構築/再構築は私にとってはうまくいきませんでした。ソリューションを閉じて再度開く必要があり、クラスがようやく登場しました。

0
Gullbyrd

新しいMVCインターネットサイトを作成します。既存の(モデルクラス)を追加します-それが機能することを確認してから、2つのプロジェクトの差分を開始します。

0
RickAndMSFT