タイプまたは名前空間名「オブジェクト」は、名前空間 'system.dataに存在しません。
-
16-09-2019 - |
質問
エンティティ、C#、SQL Serverを使用して、n層アプリを作成しています。私はすべてのDALコンポーネントに共通するいくつかの基本クラスを作成しています。この基本クラスでは、エンティティオブジェクトが継承するObjectContextベースクラスの接続状態を処理したいと考えています。
コンパイルは次のエラーをスローします。
タイプまたは名前空間名「オブジェクト」は、名前空間 'system.data'に存在しません(アセンブリリファレンスがありませんか?)
また、使用されたステートメントSystem.data.Objectsは同じ理由で解決しません。
アセンブリを参照として追加しようとしましたが、アセンブリ参照の.NETタブでそれを見つけることができませんでした。
何かご意見は?ありがとう!
解決
.NETアセンブリSystem.data.entity.dllへの参照を追加する必要があります。
他のヒント
エンティティフレームワーク6を使用している場合、名前スペースが変更されました。あなたは使いたいです
System.Data.Entity.Core.Objects.ObjectQuery
しばらく前にEF5からEF6 Nugetにアップグレードし、この問題に遭遇し続けました。生成されたコードを参照するように更新することで、それを修正します System.Data.Entity.Core.Objects
, 、しかし、世代後、それは再び戻されます(生成されてから予想どおり)。
これは問題を永久に解決しました:
http://msdn.microsoft.com/en-us/data/upgradeef6
EFデザイナーで作成されたモデルがある場合は、EF6互換コードを生成するためにコード生成テンプレートを更新する必要があります。 ノート: 現在、Visual Studio 2012および2013で利用できるEF 6.x DBContextジェネレーターテンプレートのみがあります。
- 既存のコード生成テンプレートを削除します。これらのファイルは通常、名前が付けられます u003Cedmx_file_name>.tt と u003Cedmx_file_name>.context.tt ソリューションエクスプローラーのEDMXファイルの下にネストされます。ソリューションエクスプローラーのテンプレートを選択して、 del それらを削除する鍵。
ノート: Webサイトのプロジェクトでは、テンプレートはEDMXファイルの下にネストされませんが、ソリューションエクスプローラーに並んでリストされます。
ノート: VB.NETプロジェクトでは、ネストされたテンプレートファイルを表示できるように「すべてのファイルを表示する」を有効にする必要があります。- 適切なEF 6.Xコード生成テンプレートを追加します。 EFデザイナーでモデルを開き、デザイン表面を右クリックして選択します コード生成アイテムを追加してください...
- DBContextAPIを使用している場合(推奨)、 EF 6.x DBContextジェネレーター で利用可能になります データ タブ。
ノート: Visual Studio 2012を使用している場合は、このテンプレートを使用するにはEF 6ツールをインストールする必要があります。見る エンティティフレームワークを取得します 詳細については。- ObjectContextAPIを使用している場合は、 オンライン タブと検索 EF 6.X EntityObjectジェネレーター.
- コード生成テンプレートにカスタマイズを適用した場合、更新されたテンプレートに再適用する必要があります。
2013年と同じ問題
web.configに追加しました:
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
それは魅力のように機能しました。
私の場合、EF 6+の場合、これを使用する場合:
System.Data.Entity.Core.Objects.ObjectQuery
このコマンドの一部として:
var sql = ((System.Data.Entity.Core.Objects.ObjectQuery)query).ToTraceString();
このエラーがありました:
Cannot cast 'query' (which has an actual type of 'System.Data.Entity.Infrastructure.DbQuery<<>f__AnonymousType3<string,string,string,short,string>>') to 'System.Data.Entity.Core.Objects.ObjectQuery'
だから私はこれを使用する必要がありました:
var sql = ((System.Data.Entity.Infrastructure.DbQuery<<>f__AnonymousType3<string,string,string,short,string>>)query).ToString();
もちろん、匿名タイプの署名は異なる場合があります。
Hth。
「system.data.objects.entityfunctions」を使用する場合
ef 6.1+で「System.data.entity.dbfunctions」を使用します
System.data.linqについて、.dllファイルへの参照を追加しました。上記では十分ではありませんでした。次のバージョンのさまざまなディレクトリに.dllを見つけることができます。
System.Data.Linq C: Program Files(x86) Reference Assemblies Microsoft Framework V3.5 System.linq.dll 3.5.0.0
System.Data.linq C: Program Files(x86) Reference Assemblies Microsoft Framework.netframework v4.0 profile client system.data.linq.dll 4.0.0.0
.NETアセンブリSystem.data.linqへの参照を追加する必要があります