18

過去に、edmx ファイルの作成に成功しました。これは EF5 と Visual Studio 2012 を使用していました。その後、Visual Studio 2013 と EF6 にアップグレードしました。既存の EF 5 コードは引き続き機能しますが、問題が発生しました。edmx ファイルと EntityDataSource を作成できます。データ ソースを構成できます。テーブルと列は正常に表示されますが、スキーマを更新しようとすると、次のようになります。

EntityDataSource からの次のエラーのため、スキーマを特定できませんでした:

の CLR タイプが見つかりませんでした (私のタイプはこちら)

コード生成戦略をデフォルト (EF 5 で作成された既存の edmx ファイルは Legacy ObjectContext として設定されている) に変更するようにオンラインで指示しているソリューションを見たことがありますが、オプション 'T4' がグレーアウト。

ここに画像の説明を入力

コード生成戦略で T4 を使用しないようにする方法はありますか?

編集:

Pawel は、EntityDataSource は EF 6 をサポートしていないと述べています。EF 6 に接続する方法の簡単なステップバイステップ ガイドを示すチュートリアルはありますか? Beginning ASP.Net 4という本からすべてのEF情報を入手しましたが、明らかに古くなっています。EF 6 はまだベータ段階にあるようです。たぶん、ある段階で EntityDataSource のサポートを追加するでしょうか?

編集2:

OK、私はこれを少しいじっていましたが、LinqDataSource を使用して接続できます。数日間はあまりいじる機会はありませんが、これはうまくいくようです。

編集3:

LinqDataSource を使用しても機能しません。実行できる CRUD 操作は読み取りのみです。明らかに、新しい EF 6.0 フレームワークを使用する方法があるに違いありません (Pawel は、MVC を使用することを提案しています)。

編集4:

シナリオの解決策を見つけました。以下の回答を参照してください。

4

6 に答える 6

12

VS2012/VS2013 で EF6 を使用している場合、EF6 の変更により、サポートされている生成戦略は T4 のみです。VS Gallery の T4 テンプレートを使用して、EntityObject ベースのエンティティと ObjectContext ベースのコンテキストを取得できます。注: EntityDataSource は現在 EF6 をサポートしていません。

編集

EF6 をサポートする EntityDataSourceControl のプレビューが利用可能になりました

于 2013-10-15T20:48:29.563 に答える
4

Ef6 では、レガシー コンテキストを使用できます。edmx ファイルを右クリックし、[オプションで開く] を選択して XML ビューアーで開きます。次に、legacy を検索し、その値を true に設定します。

于 2014-12-16T21:28:09.757 に答える
1

Pawel が言及しているように、EF 6 では T4 しか使用できません。システムを EF 5 の使用に戻すために私がしたことは、NuGet パッケージ マネージャーを使用して EF 6 をアンインストールすることでした (Web サイト -> NuGet パッケージの管理 -> インストール済みパッケージ -> EntityFramework - > アンインストール)。次に、NuGet パッケージ マネージャーを使用して EF 5 を追加する必要がありました (同じメニューですが、インストール済みパッケージではなくオンライン)。次に、web.config から以下を削除する必要がありました。

<providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>

ADO.NET Entity Data Model を追加すると、使用する Entity Framework のバージョンを尋ねられますが、Entity Framework 6.0 はグレー表示されています。これは明らかにバグです。EF 6.0 がインストールされていないときではなく、インストールされているときにこれを確認する必要があります。インストール時に、必要なバージョンを尋ねることはなく、バージョン 6.0 の edmx が自動的に作成されました。

于 2013-10-16T18:23:26.507 に答える
0

同じ問題があり (EF6)、メタデータ アーティファクト処理を「出力ディレクトリにコピー」に変更しても、同じエラーが発生します。これは、私の問題のほとんどの解決策として提案されています。

私の手順(エラーを再現するため):

DAL というディレクトリを作成し、edmx ファイルを追加し、接続文字列を作成できるようにし、2 つのテーブルを追加してビルドします。

default.aspx ページを作成し、ツールボックスから EntityDataSource をドラッグし、フライアウトの [データ ソースの構成] をクリックして、上から名前付きの接続を選択すると、次のエラーが表示されます。

接続文字列で指定されたメタデータを読み込めませんでした。Web プロジェクトを再構築して、メタデータを含む可能性のあるアセンブリを構築することを検討してください。次のエラーが発生しました: プロバイダーは ProviderManifest インスタンスを返しませんでした。

現在、約24時間解決策を見つけようとしています。

したがって、EF5 (6 ではなく) を選択して上記の手順を実行すると、ダイアグラム サーフェスを右クリックしてプロパティに移動し、2 つの設定を変更します。

1.) アーティファクト処理を「出力ディレクトリにコピー」する 2.) コード生成戦略を T4 から「レガシー ObjectContext」に変更する

これにより、ツールボックスから EntityDataSource をドラッグし、フライアウトの [データソースの構成] をクリックして、上から名前付きの接続を選択すると、すべてが愛とプログラミングの世界に戻ります...

最終的に適切なソリューションをまとめるのに、24 時間の実質的な時間と 2 日間の無駄なコーディングしかかかりませんでした。そして、私のラップトップは平らになり、再インストールされました.b / c私はすっごく必死で、髪を引っ張っていました.

于 2013-12-01T13:26:52.753 に答える