6

私はVS 2013とSQL Svr 2012を使用しており、EFを使用してグリッドビューを作成しようとしています。これは非常に単純なテストなので、キーといくつかのデータ フィールドを持つテーブルが 1 つだけあります。モデルを作成するプロセスは正常に動作しているようです - デザイナー ビューで期待どおりに表示され、app_code にファイルが作成され、bin フォルダーが 2 つの dll で作成され、構成ファイルが接続文字列とその他のエントリで更新されます。

「名前付き接続」を選択しようとすると、「指定されたメタデータ リソースを読み込めません」というエラーが表示され、プロジェクトを再構築してアセンブリを取得することについて説明されています。

私はこのような他のケースを読むのに何時間も費やしましたが、理解できません:

  1. VS 2010 では問題にならなかったのに、なぜこれが起こっているのか

  2. 必要なリソースを指すように接続文字列を修正するにはどうすればよいですか。完全修飾アセンブリ名に関するすべての技術的アドバイスに完全に迷っています-私が試したものは何も機能しません。

  3. リソースが適切な場所に配置されるようにパラメータを設定するにはどうすればよいですか? 私が読んだすべてのアドバイスは、VS 2013 とうまく関連していないようです。

VS 2013 をアンインストールして VS 2012 を使用する必要があるかどうかを判断する必要があります。現在、VS 2010 と ASP 4.0 を使用していますが、ASP 4.5 に移行して、Microsoft テクノロジに遅れないようにしたいと考えています。ただし、バグのある VS リリースを処理するスキル レベルはありません。この EF execise は、コンピューターのバグまたは奇妙な破損のいずれかが原因である可能性があるように思われます。VS 2013 Express と SQL Svr 2012 を、過去にこれらのツールをまったく使用していなかったクリーンなマシンにインストールしました。

Visual Studio に精通している人が私の問題を再現してくれるのを見てみたいです。数分しかかからないからです。

  1. MS SQL Server で、主キーといくつかのデータ フィールドを持つ 1 つのテーブルを含む小さな DB を作成し、いくつかのテスト データを入力します。これを TinyDB with TestTable1 と呼びます。

  2. VS 2013 Express for Web を使用して、VB を使用して「ASP の空の Web サイト」のオプションを使用して「新しい Web サイト」を作成します。

  3. 「ADO.Net Entity Data Model」を含む ASP App_Code フォルダーを追加し、名前を「Model」のままにします。

  4. DB からモデルを生成し、「TinyDB」の「新しい接続」を作成し、Entity Framework 6.0 を使用して、「TestTable1」を選択します。名前空間は「TinyDBModel」であることに注意してください。[完了] をクリックすると、App_Code、その他のフォルダーにいくつかの項目が生成され、web.config も更新されます。

  5. default.aspx という Web フォームを追加し、グリッドビューをドラッグします。グリッドビューのデザイン モードで、[新しいデータ ソース] を選択し、[エンティティ] オプションを選択します (default.aspx に表示される EntityDataSource1 の名前に注意してください)。[次へ] をクリックし、[名前付き接続] の下で [TinyDBEntities] を選択します。ここで、「指定されたメタデータ リソースを読み込めません」というエラーが表示されます。

VS 2010 でのこの正確な演習は完全に機能し、正しいデータが表示されたグリッドが生成されることに注意してください。

4

1 に答える 1

8

残念ながら、EntityDataSource コントロールは、Entity Framework の最新バージョンである EF6 では機能しません。コントロールが VS または EF の将来の更新バージョンで更新されることを願っていますが、現時点では 2 つを一緒に使用することはできません。

いくつかの解決策/代替手段があります:

  1. EF 5 に戻ります。これを行うには、App_Code フォルダーから .edmx および .tt ファイルを削除し、Bin フォルダーから EF アセンブリを削除し、web.config から EF への参照を削除します。次に、サイトを再構築し、新しい ADO.NET エンティティ モデルを追加して、バージョンの選択ダイアログでバージョン 5 を選択します。次に、App_Code フォルダーから .tt ファイルを削除し、EDMX ダイアグラムを開き、空のスポットを右クリックして、[プロパティ グリッド] で [コード生成戦略] を [レガシー ObjectContext] に設定します。その後、もう一度再構築すると、機能するはずです。

  2. モデル バインディングを使用します。これは本当に推奨されるソリューションです。Microsoft / EF チームは、EntityDataSource コントロールには近づかず、動的データ Web サイトにのみ使用することを推奨しています。モデル バインディングが推奨されるソリューションです。非常にクリーンで簡単に使用でき、クエリとオブジェクトの更新を細かく制御できます。モデル バインディングの詳細については、http ://www.asp.net/web-forms/tutorials/data-access/model-binding/retriving-data をご覧ください。

于 2013-10-27T08:16:04.863 に答える