41

モデルから新しいビューを作成しています。
私が得ているエラーメッセージは

エラー
選択したコード ジェネレーターの実行中にエラーが発生しました:
'パス
'C:\Users\XXXXXXX\AppData\Local\Temp\SOMEGUID\EntityFramework.dll' へのアクセスが拒否されました'.

管理者として VS 2013 を実行しています。

コマンドラインでMvcScaffoldingはVS 2013 RCと互換性がありますか?しかし、これは問題を解決していないようです。

VS2013 C#5 MVC5 VS 2013 で新しいプロジェクトが開始されました。

4

25 に答える 25

25

VS2013 エラー: 選択したコード ジェネレーターの実行中にエラーが発生しました: 'タイプ 'SolutionName.Model.SalesOrder' の構成は既に追加されています ...'

Pluralsight コース「EF、MVC、ノックアウト、Ajax、および検証を使用した親子データ」の作業中にこの問題が発生しました。Entity Framework を使用して、テンプレートMVC 5 Controller とビューを使用して、新しい足場アイテムを追加しようとしていました。

私が使用していたデータ コンテキスト クラスには、OnModelCreating メソッドのオーバーライドが含まれていました。EF の既定値が適切でないいくつかの明示的なデータベース列構成を追加するには、オーバーライドが必要でした。このオーバーライドはシンプルで機能し、バグはありませんでしたが、(前述のように) コントローラーのスキャフォールディング コード生成に干渉しました。

私のために働いた解決策:

1 - OnModelCreating オーバーライドを削除 (コメント アウト) し、スキャフォールディング テンプレートはエラー メッセージなしで完了しました。コントローラー コードは期待どおりに生成されました。

2 - ただし、「モデルが変更された」ため、プロジェクトをビルドしようとすると詰まりました。コントローラー コードが適切に生成されたので、OnModelCreating オーバーライドを復元 (コメント解除) し、プロジェクトをビルドして正常に実行しました。

于 2014-08-16T22:31:55.383 に答える
16

問題は、破損web.configしたパッケージ ディレクトリにありました。

新しいプロジェクトを作成し、コード ファイルを新しい作業プロジェクトにコピーしました。後で戻って、構成ファイルの差分とプロジェクト自体のフォルダー差分を実行しました。

問題は、更新によって多くの更新アーティファクトが含まれた構成ファイルが大量に破棄され、最終的には削除されたことでした。

2 つ目の問題は、Nuget パッケージのアプリケーションで消去されるはずだった古い DLL に古いプロジェクトがハングアップし続けたことです。そこで、フォルダーとパッケージフォルダーをワイプしましobjbin。それが完了した後、古いプロジェクトを修復してきれいに構築することができました。

構成ファイルまたはパッケージ フォルダーがなぜ壊れたのかは調べていませんが、2 つのうちの 1 つであると推測しています。

  1. おそらくnugetパッケージに欠陥があります
  2. TFS ソース管理により、nuget がさまざまな依存関係を適切に更新することがブロックされました。

それ以来、更新を適用する前に、すべてをチェックしています。ただし、EF をしばらく更新していないため、EF または足場の問題が解決されたという証拠はありません。

于 2014-01-22T01:55:06.763 に答える
12

すべてのプロジェクトをチェックしたところ、それぞれが同じバージョンの Entity Framework を持っていました。私の場合、問題は、私のプロジェクトの 1 つが .Net 4.0 を対象としていて、残りは .Net 4.5 であったことでした。

解決:

  1. ソリューション Project->Properties->Application の各プロジェクトについて: Target Framework を .Net 4.5 (または必要なもの) に設定します。
  2. ツール -> ソリューションの NuGet パッケージを管理します。インストールされている「Entity Framework」を見つけます。そして、[管理] をクリックします。すべてのプロジェクトのチェックを外します (EF を必要とするプロジェクトに注意してください)。ここで、EF を再管理し、必要なプロジェクトを確認します。
  3. ソリューションをクリーンアップして再構築します。
于 2014-05-01T12:52:24.557 に答える
4

私はまったく同じ問題を抱えています。Pluralsight コース「EF、MVC、ノックアウト、Ajax、および検証を使用した親子データ」をたどっているときに、最初にこれに遭遇しました。

MVC 5、EF 6.1.1、およびフレームワーク 4.5.2 を使用しています。

VS2013 を update 4 に更新した後でも、このエラーは解決しませんでした。

DbContext クラス内で DbSet を IDbSet に変更することで、この厄介な問題を回避できました。回答はもともとここからでした。

//From
public DbSet SalesOrders { get; set; }

//To
public IDbSet SalesOrders { get; set; }
于 2014-11-14T09:33:01.730 に答える
4

これは通常、無効なWeb.configファイルが原因です。<!-- -->私は同じ問題を抱えていましたが、HTML コメント ブロックを誤ってサーバー側のコメントブロックに変更してしまったことが判明しました@* *@([すべて置換] アクションを使用)。

また、WinForms アプリケーションを開発している場合は、App.config.

于 2014-05-25T11:17:49.990 に答える
3

これを解決するために私がうまくいったこと:ソリューションを閉じ、ソリューションファイルではなくプロジェクトファイルをクリックしてプロジェクトを開き、コントローラーを追加し、叔父をボブします

于 2014-03-06T09:52:30.050 に答える
3

上記のどれも私にとって役に立ちませんでした。

問題の原因は、スキャフォールド アイテムが依存しているコンテキスト クラスで OnModelCreating をオーバーライドすることであることがわかりました。このメソッドをコメントアウトすると、足場が機能します。

Microsoft がバグの多いコードをリリースしないことを願っています。

于 2014-08-12T00:56:12.497 に答える
2

別のプロジェクトからモデルを参照するときに、新しい MVC5 プロジェクトでこのエラーが発生しました。パスを確認すると、EntityFramework.dllが存在していました。読み取り専用でしたが。プロセス モニターは、ファイルの削除中にエラーが発生したことを示しました。パッケージ フォルダー (ソース管理に保存されているコピー) の EntityFramework.dll を書き込み可能に設定すると、このエラーは回避されましたが、参照されているものと一致しないため、EntityFramework アセンブリを読み込めないという別のエラーが発生しました。私のモデル クラスは、古いバージョンのエンティティ フレームワークを使用していた別のプロジェクトで定義されていました。MVC5 プロジェクトは EF 6 を参照していましたが、モデルはプロジェクトからのものであり、EF 4.4 を参照していました。モデルのプロジェクトでEF 6にアップグレードすると、修正されました。

于 2013-11-21T09:15:40.020 に答える
1

与えられた他の回答とはまったく異なる理由で、MVC ASP.NET Web アプリに Api コントローラーを追加しようとしたときに、この問題が発生しました。コピー アンド ペースト操作が原因で、整数プロパティのIndexAttribute宣言にStringLength属性を誤って含めてしまいました。

[Index]
[IndexAttribute("NumTrainingPasses", 0), StringLength(50)]
public int NumTrainingPasses { get; set; }

IndexAttribute宣言を削除すると、問題のあるプロパティ (NumTrainingPasses) を含むモデルの Api コントローラーを追加できました。

検索エンジンを助けるために、問題を修正する前に表示された完全なエラー メッセージを次に示します。

選択したコード ジェネレーターの実行中にエラーが発生しました:

「Owner.Models.MainRecord」のメタデータを取得できません。プロパティ
「NumTrainingPasses」は文字列またはバイト配列ではありません。長さは、文字列またはバイト配列プロパティに対してのみ構成できます。

于 2015-07-15T20:10:09.360 に答える
1

私の問題は、ここでの多くの経験と似ていました。新しいビューを追加しようとしたとき、またはスキャフォールディングを使用して新しいコントローラーを追加しようとしたときの一般的なエラー メッセージです。

MVC 5 と EF 6 モデルビルダーは仲が良くないことがわかりました。

私の解決策:

  1. Context クラスで modelBuilder をコメントアウトします。
  2. クリーン ソリューション、リビルド ソリューション。
  3. スキャフォールディングを介してビューとコントローラーを追加する
  4. モデルビルダーのコメントを外します。
于 2016-05-15T10:22:46.177 に答える
1

これは通常、Web.config の形式に関連しています。

ソリューションを再構築し、[エラー] タブの [メッセージ] で検索します。web.config の形式に問題がある場合は、そこに表示されます。修正して、もう一度やり直してください。

例: 私はconnectionstring代わりに持っていたconnectionString

于 2016-12-12T20:00:53.423 に答える
0
  • vs2013 アップデート 4
  • ef 5.0.0
  • IBM db2connector 10.5 fp 5

web.config ファイルを次のように変更します: ef タグからプロバイダーを削除しました:

<entityFramework>
</entityFramework>

構成セクションの下に接続文字列タグを追加しました。

</configSections>
<connectionStrings>
<add name=".." connectionString="..." providerName="System.Data.EntityClient" />
</connectionStrings>
于 2015-06-28T04:02:39.723 に答える
0

MSVS2013 Update 4 および EF 6.0 でもこの問題が発生しています。メッセージは次のとおりです。

    there was an error running the selected code generator.
A configuration for type XXXX has already been added ...[]

約10クラスのモデルがあります。プロジェクトの開始時に要素を問題なく足場にしました。

機能を追加してから数日後、モデルから別のクラスをスキャフォールディングしようとしましたが、エラーが発生して実行できませんでした。

MSVS を update 2 から update 4 に更新しようとしましたが、OnModelCreating メソッドや提案されたその他のアイデアをコメントアウトして運がありませんでした。

プロジェクトを続行するための一時的な方法として、別の asp.net プロジェクトを作成し、そこにモデル クラスを貼り付け (流暢な API を使用しているため、注釈はほとんどありません)、コントローラーとビューを正常に作成しました。

その後、作成したクラスを元のプロジェクトに貼り付け、いくつかの間違い (主に dbset 名) を修正しました。

動作しているようですが、クラス間の関係に関連する間違いがまだ見つかると思います (作成時の構成が流暢でないため)。

これが他のユーザーに役立つことを願っています。

于 2015-02-25T12:05:29.633 に答える
0

MVC アプリの EF 参照プロパティ ([プロパティ] ウィンドウ) で「特定のバージョン」が False としてマークされ、MVC アプリから参照された他のプロジェクト (DBContext とモデルを含む) で EF 参照プロパティがとしてマークされたときに、同じ問題が発生しました。真実。False としてマークしたときは、すべて問題ありませんでした。

于 2015-11-15T11:02:56.093 に答える
0

これは、特定のAreaの最上位フォルダーの外に新しい足場を作成しようとしたときに発生しました。

  • マイエリア
    | - File.cs (ここに新しい scaffold を作成しようとしましたが、失敗しました。)

エリアを再選択するだけで、問題は解決しました。

  • AyArea (追加 => 新しい足場アイテム)

スキャフォールドの生成後、最初に領域を再選択しないと新しいスキャフォールドを作成できない場所に移動することに注意してください (少なくとも VS 2013 では)。

于 2015-04-20T15:51:55.167 に答える
-1

ソリューションを再構築してください。再構築する前に、「ApplicationDbContext」の参照番号がゼロであることがわかりました。これは不可能です。ソリューションを再構築すると、すべて問題ありません。

于 2014-09-10T10:08:17.610 に答える