2

Web プロジェクトとは別の C# クラス ライブラリ プロジェクトでエンティティ モデルを構築しました。別のクラス ライブラリ プロジェクトでは、AJAX を介してクライアントに渡すエンティティ クラスの表現であるいくつかの単純なクラスを作成しました。単純なオブジェクトで、データベースをクエリするためのコンテキストを作成します。Web アプリケーションからこれらのクラスのメソッドを呼び出すと、エラーが発生し続けるようには見えません。最初は、エンティティ モデルを使用してプロジェクトからの接続文字列を参照する web.config ファイルに何もなかったことが原因でした。3 つのタグを app.config ファイルから web.config ファイルにコピーしましたが、次のエラーが表示されます: データベースにクエリを実行しようとすると、キーワードがサポートされていません: 'metadata' です。

わからないことの 1 つは、コンテキストを作成する場所です。それを Web プロジェクトで実行してから、クラス ライブラリ プロジェクトのメソッドに渡す必要がありますか? このアプローチを試みると、次のエラーが発生します。

エラー CS0012: 型 'System.Data.Entity.DbContext' は、参照されていないアセンブリで定義されています。アセンブリ 'EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' への参照を追加する必要があります。

クラス ライブラリ プロジェクトでコンテキストを作成すると、アプリケーションを実行してデータベースにクエリを実行しようとすると、キーワードがサポートされていません: 'metadata' エラーが発生します。だから、ここはどこに行けばいいのかわからない。私は何を間違っていますか?答えを探すのに何時間も費やしましたが、そこには非常に多くの情報があり、これに固有のものを見つけることができませんでした.

前もって感謝します。

4

3 に答える 3

7

EntityFramework を使用してクラス ライブラリを作成すると、VS はそれをインストール済みパッケージとして自動的に追加しますが、それはクラス ライブラリ プロジェクトに対してのみです。ソリューションの NuGet パッケージ マネージャーに戻り、そのパッケージを他のプロジェクトに追加する必要があります。 ここに画像の説明を入力

于 2013-07-29T18:05:11.193 に答える
0

私の場合、次のエラーで同様の問題が発生しました。

Error   1   The type 'System.Data.Entity.DbContext' is defined in an assembly that is not referenced. You must add a reference to assembly 'EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.    C:\Projects\MyProject\MyProject.Model.Net\ProductManager.cs 16  17  MyProject.Model.Net
Error   2   The type 'System.Data.Entity.DbSet`1<T0>' is defined in an assembly that is not referenced. You must add a reference to assembly 'EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.  C:\Projects\MyProject\MyProject.Model.Net\ProductManager.cs 17  17  MyProject.Model.Net
Error   3   'System.Data.Entity.DbSet`1<MyProject.Data.ProductInventoryView>' does not contain a definition for 'Where' and no extension method 'Where' accepting a first argument of type 'System.Data.Entity.DbSet`1<MyProject.Data.ProductInventoryView>' could be found (are you missing a using directive or an assembly reference?)   C:\Projects\MyProject\MyProject.Model.Net\ProductManager.cs 18  21  MyProject.Model.Net
Error   4   Metadata file 'C:\Projects\MyProject\MyProject.Model.Net\bin\Debug\MyProject.Model.Net.dll' could not be found  C:\Projects\MyProject\MyProject.Web\CSC MyProject.Web

この問題を解決するには、次のディレクトリを参照してファイルを選択することにより、EntityFramework.dll 参照を MyProject.Data プロジェクトに追加する必要がありました: ~\MyProject\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll

于 2014-12-03T17:17:08.953 に答える
0

web.config ファイルを編集して、これを修正しました。providerName を System.Data.SqlClient から System.Data.EntityClient に変更する必要がありました。どのように切り替えられたのかわかりませんが、現在は機能しています。You must add a reference to assembly 'EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'." エラーを取り除くために、上記のコメントにも注意してください。

于 2013-05-06T19:11:56.937 に答える