2016-05-30 3 views
5

EF 6データベースの最初のアプローチでWPFアプリケーションを開発しています。プロジェクトこのエラーは常に表示されます。エンティティフレームワーク:コンテキストがコードファーストモードでEDMXファイルから生成されたコードで使用されています

コンテキストは、データベースファーストまたはモデルファースト開発のEDMXファイルから生成されたコードでコードファーストモードで使用されています。これは正しく動作しません。この問題を修正するには、この例外をスローするコード行を削除しないでください。データベースファーストまたはモデルファーストを使用する場合は、Entity Framework接続文字列が起動プロジェクトのapp.configまたはweb.configに含まれていることを確認してください。独自のDbConnectionを作成する場合は、それがEntityConnectionであり、他の種類のDbConnectionではなく、DbConnectionをとる基本DbContextコンストラクタの1つに渡すことを確認してください。コードファースト、データベースファースト、モデルの詳細については、まず、エンティティフレームワークのドキュメントを参照してください。http://go.microsoft.com/fwlink/?LinkId=394715

+0

接続文字列を設定しましたか?ここで見ていない場合:http://www.asp.net/mvc/overview/getting-started/introduction/creating-a-connection-string –

+0

私のために動作しません。 – Munjani375

+0

接続文字列または接続文字列ごとに2つ以上のコンテキストがあります。 –

答えて

1

生成された接続文字列を使用するべきではありません。代わりにapp.configconnection stringセクションで使用してみてください。(最初のデータベースである場合)、あなたが行うことができます

"data source=localhost\sqlexpress; initial catalog=sample; integrated security=True;MultipleActiveResultSets=True;" 
3

一つは...ある

オープン.edmxに[図] - >右クリック - >「更新をデータベースからのモデル "

"追加 "、"更新 "、"削除 "のタブが表示されます。

もしそうでなければ...あなたの接続は壊れているでしょうし、VSのダイアログが新しい接続文字列を作成します。 =)

+0

これが最初のデザインの場合はどうなりますか? –

+0

プロジェクトで.Edmxを使用していますか? –

0

私もこの全く同じメッセージに直面しましたが、Web MVCプロジェクトで作業しました。このメッセージは、インポートされたモデルからコントローラを自動生成しようとすると発生します。 「EDMXファイルから生成された」ため、動作していないようです。

「EFデザイナー」の代わりに「コードファースト」に基づいてモデルを生成するとうまくいきます。悪い点は、自動コントローラ生成が機能したい場合、EF Designerを使用できないということです。あなたのモデルを生成する2つの方法からどちらが重要かは関係ありません。モデルが生成されたら、同じ方法で使用します。

すべてのemdxオブジェクトをプロジェクトから削除し、EF Designerではなくコードファーストに基づいてモデルを再作成しようとします。私のために働いた!

5

EFは、接続文字列のメタデータセクションの有無を前提にしています。このエラーが表示された場合は、設定ファイルの接続文字列にメタデータセクションを追加できます。

など。私のミスはコンストラクタ

(サーバー=テスト\テストで標準の接続文字列を使用していた

<add name="MyModel" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;data source=SERVER\INSTANCE;initial catalog=MyModel;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /> 
4

:それはこのようになりますように

<add name="MyModel" connectionString="data source=SERVER\INSTANCE;initial catalog=MyModel;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /> 

前に付加metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;:あなたの接続文字列は次のように見える場合;データベース= DB;ユーザーID =テストユーザー;パスワード=テスト)、

エンティティフレームワークは異なる形式を必要とします

(メタデータ= resを:// /DBModel.csdl|res:// /DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider接続文字列= "データ"=プロバイダ名=" "System.Data.EntityClient)

0

非常に遅いが、それでも役立ちます。私は同様の問題に悩まされている。 SOに関する質問を投稿し、解決策を見つけることができました。 Connection String errors in C# Web Apiを参照できます。 私の状況は、web.configに2つの接続文字列があったことです(リンク先に行く理由を知ることになります)。コメント1つの文字列は、他の一つは、以下のようなエラーを上げたコメントしながら、あなたが得たエラー上げた。

タイプのコントローラを作成しようとすると、エラーが発生しました「AccountController」。コントローラにパラメータのないパブリックコンストラクタがあることを確認します。

私は最初の接続文字列をDefaultConnectionとして指定し、ApplicationDbContextクラスコンストラクターでこのDefaultConnectionを付けました。今、私のAccountControllerはこの接続文字列を使用し、他のすべてのコントローラは2番目の接続文字列を使います。 これは私の問題を解決しました。

+0

このコード例を投稿してもよろしいですか? –

+0

@HunterNelson私は既に私が参照を与えた私の答えに掲載している。 –

関連する問題