エンティティ、C#、およびSQL Serverを使用してn層アプリを作成しています。すべてのDALコンポーネントに共通の基本クラスを作成しています。この基本クラスでは、エンティティオブジェクトによって継承されたObjectContext基本クラスの接続状態を処理します。
コンパイルすると次のエラーがスローされます。
型または名前空間名「オブジェクト」が名前空間「System.Data」に存在しません(アセンブリ参照がありませんか?)
また、usingステートメントSystem.Data.Objectsは同じ理由で解決しません。
アセンブリを参照として追加しようとしましたが、アセンブリ参照の[.NET]タブで見つけることができませんでした。
何かご意見は?ありがとう!
.NET Assembly System.Data.Entity.dllへの参照を追加する必要があります。
Entity Framework 6を使用している場合、名前空間が変更されています。使いたい
System.Data.Entity.Core.Objects.ObjectQuery
しばらく前にEF5からEF6 nugetにアップグレードすると、この問題が引き続き発生しました。生成されたコードをSystem.Data.Entity.Core.Objects
を参照するように更新することで一時的に修正しますが、生成後は再び生成されます(生成後の予想どおり)。
これで問題が解決しました:
http://msdn.Microsoft.com/en-us/data/upgradeef6
EF Designerで作成したモデルがある場合は、コード生成テンプレートを更新してEF6互換コードを生成する必要があります。 注:現在、EF 6.x DbContext GeneratorテンプレートのみがありますVisual Studio 2012および2013で利用可能。
- 既存のコード生成テンプレートを削除します。これらのファイルの名前は通常、<edmx_file_name> .ttおよび<edmx_file_name> .Context.ttソリューションエクスプローラーでedmxファイルの下にネストします。ソリューションエクスプローラーでテンプレートを選択し、 Del それらを削除するキー。
注:Webサイトプロジェクトではテンプレートedmxファイルの下にネストされませんが、ソリューションエクスプローラーに一緒にリストされます。
注:VB.NETプロジェクトでは、ネストされたテンプレートファイルを表示するには、[すべてのファイルを表示]を有効にする必要があります。- 適切なEF 6.xコード生成テンプレートを追加します。 EF Designerでモデルを開き、デザインサーフェイスを右クリックして、Add Code Generation Item ...を選択します。
- DbContext APIを使用している場合(推奨)、EF 6.x DbContext GeneratorはData タブ。
注:Visual Studioを使用している場合2012年には、このテンプレートを使用するにはEF 6ツールをインストールする必要があります。詳細については、 Get Entity Framework を参照してください。- ObjectContext APIを使用している場合は、Onlineタブを選択し、EF 6.xを検索する必要があります。 EntityObject Generator。
- コード生成テンプレートにカスタマイズを適用した場合、更新されたテンプレートにカスタマイズを再適用する必要があります。
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。
VS 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- the-namespace-SystemData.aspx
「System.Data.Objects.EntityFunctions」を使用する場合
eF 6.1+で「System.Data.Entity.DbFunctions」を使用する
.NET Assembly System.Data.Linqへの参照を追加する必要があります
System.Data.Linqの.dllファイルへの参照を追加しましたが、上記では不十分です。次のバージョンのさまざまなディレクトリに.dllがあります。
System.Data.Linq C:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework\v3.5\System.Data.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