it-swarm.com.de

Der Typ- oder Namespace-Name 'Objects' ist im Namespace 'System.Data' nicht vorhanden

Ich verwende Entitäten, C # und SQL Server, um eine n-Tier-App zu erstellen. Ich erstelle einige Basisklassen, die für alle meine DAL-Komponenten gelten. In dieser Basisklasse möchte ich den Verbindungsstatus der ObjectContext-Basisklasse behandeln, die von entitys object geerbt wird.

Das Kompilieren löst den folgenden Fehler aus:

Der Typ- oder Namespace-Name "Objekte" ist im Namespace "System.Data" nicht vorhanden. (Fehlt ein Assemblyverweis?)

Auch die using-Anweisung System.Data.Objects wird aus demselben Grund nicht aufgelöst.

Ich habe versucht, die Assembly als Referenz hinzuzufügen, konnte sie jedoch nicht auf der Registerkarte .NET der Assembly-Referenzen finden.

Irgendwelche Gedanken? Vielen Dank!

97
pencilslate

Sie müssen einen Verweis auf .NET Assembly System.Data.Entity.dll hinzufügen.

198
Joshua Belden

Wenn Sie Entity Framework 6 verwenden, hat sich der Namensraum geändert. Sie möchten verwenden

System.Data.Entity.Core.Objects.ObjectQuery
50
James

Vor einiger Zeit wurde ein Upgrade von EF5 auf EF6 durchgeführt, und dieses Problem trat immer wieder auf. Ich würde es vorübergehend beheben, indem ich den generierten Code auf Referenz System.Data.Entity.Core.Objects Aktualisiere, aber nach der Generierung würde es wieder zurückgesetzt (wie erwartet, seitdem es generiert wurde).

Dies löste das Problem endgültig:

http://msdn.Microsoft.com/en-us/data/upgradeef6

Wenn Sie Modelle mit EF Designer erstellt haben, müssen Sie die Codegenerierungsvorlagen aktualisieren, um EF6-kompatiblen Code zu generieren. Hinweis: Derzeit sind nur EF 6.x DbContext Generator-Vorlagen für Visual Studio 2012 und verfügbar 2013.

  1. Löschen Sie vorhandene Code-Generierungsvorlagen. Diese Dateien haben normalerweise den Namen <edmx_dateiname> .tt und <edmx_dateiname> .Context.tt und im Projektmappen-Explorer unter Ihrer edmx-Datei verschachtelt sein. Sie können die Vorlagen im Projektmappen-Explorer auswählen und auf drücken Del Taste, um sie zu löschen.
    Hinweis: In Website-Projekten werden die Vorlagen nicht unter Ihren verschachtelt edmx-Datei, aber im Projektmappen-Explorer daneben aufgeführt.
    Hinweis: In VB.NET-Projekten müssen Sie 'Show Alle Dateien ', um die verschachtelten Vorlagendateien sehen zu können.
  2. Fügen Sie die entsprechende EF 6.x-Codegenerierungsvorlage hinzu. Öffnen Sie Ihr Modell im EF Designer, klicken Sie mit der rechten Maustaste auf die Entwurfsoberfläche und wählen Sie Codeerzeugungselement hinzufügen ...
    • Wenn Sie die DbContext-API verwenden (empfohlen), ist EF 6.x DbContext Generator unter den Daten verfügbar Registerkarte .
      Hinweis: Wenn Sie Visual Studio 2012 verwenden, müssen Sie Installieren Sie die EF 6 Tools, um diese Vorlage zu erhalten. Siehe Get Entity Framework für Details.
    • Wenn Sie die ObjectContext-API verwenden, müssen Sie die Registerkarte Online auswählen und nach EF 6.x suchen EntityObject Generator .
  3. Wenn Sie Anpassungen an den Codegenerierungsvorlagen vorgenommen haben, müssen Sie diese erneut auf die aktualisierten Vorlagen anwenden.
31
Tim Valentine

In meinem Fall für EF 6+, wenn Sie dies verwenden:

System.Data.Entity.Core.Objects.ObjectQuery

Im Rahmen dieses Befehls:

var sql = ((System.Data.Entity.Core.Objects.ObjectQuery)query).ToTraceString();

Ich habe diesen Fehler bekommen:

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'

Also musste ich folgendes verwenden:

var sql = ((System.Data.Entity.Infrastructure.DbQuery<<>f__AnonymousType3<string,string,string,short,string>>)query).ToString();    

Natürlich kann Ihre anonyme Typensignatur abweichen.

HTH.

3
user8128167

Gleiches Problem in VS 2013

Ich fügte in Web.config hinzu:

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

Es wirkte wie ein Zauber.

Ich habe es auf folgender Seite gefunden: 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

3
Caesar

wenn Sie "System.Data.Objects.EntityFunctions" verwenden möchten

verwenden Sie "System.Data.Entity.DbFunctions" in EF 6.1+

2
sumanth

Sie müssen einen Verweis auf .NET Assembly System.Data.Linq hinzufügen

0
Null29

Ich habe einen Verweis auf die .dll-Datei hinzugefügt, da dies für System.Data.Linq nicht ausreichend war. Sie finden .dll in den verschiedenen Verzeichnissen für die folgenden Versionen.

System.Data.Linq C:\Programme (x86)\Referenzassemblys\Microsoft\Framework\v3.5\System.Data.Linq.dll 3.5.0.0

System.Data.Linq C:\Programme (x86)\Referenzassemblys\Microsoft\Framework.NETFramework\v4.0\Profile\Client\System.Data.Linq.dll 4.0.0.0

0
Tom Cubbins