タイプまたは名前空間名「オブジェクト」は、名前空間 'system.dataに存在しません。

StackOverflow https://stackoverflow.com/questions/1275043

質問

エンティティ、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ジェネレーターテンプレートのみがあります。

  1. 既存のコード生成テンプレートを削除します。これらのファイルは通常、名前が付けられます u003Cedmx_file_name>.ttu003Cedmx_file_name>.context.tt ソリューションエクスプローラーのEDMXファイルの下にネストされます。ソリューションエクスプローラーのテンプレートを選択して、 del それらを削除する鍵。
    ノート: Webサイトのプロジェクトでは、テンプレートはEDMXファイルの下にネストされませんが、ソリューションエクスプローラーに並んでリストされます。
    ノート: VB.NETプロジェクトでは、ネストされたテンプレートファイルを表示できるように「すべてのファイルを表示する」を有効にする必要があります。
  2. 適切なEF 6.Xコード生成テンプレートを追加します。 EFデザイナーでモデルを開き、デザイン表面を右クリックして選択します コード生成アイテムを追加してください...
    • DBContextAPIを使用している場合(推奨)、 EF 6.x DBContextジェネレーター で利用可能になります データ タブ。
      ノート: Visual Studio 2012を使用している場合は、このテンプレートを使用するにはEF 6ツールをインストールする必要があります。見る エンティティフレームワークを取得します 詳細については。
    • ObjectContextAPIを使用している場合は、 オンライン タブと検索 EF 6.X EntityObjectジェネレーター.
  3. コード生成テンプレートにカスタマイズを適用した場合、更新されたテンプレートに再適用する必要があります。

2013年と同じ問題

web.configに追加しました:

<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />

それは魅力のように機能しました。

ページで見つけました:http://www.programmer.bz/home/tabid/115/asp_net_sql/281/the-type-or-namespace-name-objects-does-not-exist-in-namespace-systemdata.aspx

私の場合、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への参照を追加する必要があります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top