2013-12-22 6 views
7

Ich habe eine Datenbank mit räumlichen Datentypen. Ich benutze Datenbank erstes Modell und Entity Framework 6.0.2 und .NET 4.5. Wenn ich versuche, die generierten Klassen zu verwenden, erhalte ich folgende Fehlermeldung:Entity Framework 6 und räumliche Daten

Das angegebene Schema ist nicht gültig. Fehler: Die Beziehung 'Name_FK1' wurde nicht geladen, da der Typ 'Model.TypeB' nicht verfügbar ist. Die folgenden Informationen können bei der Behebung des vorherigen Fehlers hilfreich sein: Die Eigenschaft 'Position' des Typs 'Data.TypeB' hat den Eigenschaftstyp 'System.Data.Spatial.DbGeography', der keinem primitiven Typ zugeordnet werden kann.

Derselbe Fehler ist für alle Tabellen aufgeführt, in denen ich den räumlichen Typ verwende. Der 'Name_FK1' ist eine Fremdschlüsselbeziehung.

Was mache ich falsch?

Vielen Dank für Ihre Hilfe.

Antwort

5

Ich folgte den Anweisungen auf dem folgenden Link, der andere Probleme verursachte, die ich lösen musste, aber es behob mein räumliches Problem.

http://msdn.microsoft.com/en-US/data/dn469466

+0

Dies ist th elink, wie man Anwendung aktualisiert. Ich habe eine neue Anwendung und ich füge EF 6.0 mit NuGet hinzu und dann füge ich neue Daten hinzu - ADO.NET Entity Data Model. Und das funktioniert nicht von mir. – UrosP

+0

Ich hatte genau die gleiche Fehlermeldung, die Sie getan haben, würde ich sicherstellen, dass Sie System.Data.Entity.dll nicht referenziert haben, und tun Schritt 3, die Code-Generierungsvorlage zu löschen ist und klicken Sie auf den Designer und wählen Sie Code-Generierungselement hinzufügen ... das ist das einzige, was ich anbieten kann, weil es für mich funktioniert hat. –

+0

Ich habe es versucht, aber gescheitert. Wenn ich versuche, EF 6 hinzuzufügen, habe ich nur EF 5.x DbContext Generator Option. Es gibt keine Option für EF 6.x DbContext Generator. Ich bin 100%, dass ich EF 6 und nicht EF 5 installiert habe. – UrosP

21

Ich regelte es! Sehr stolz auf mich selbst :)

Hoffe das hilft jemand anderem. Also, aus dem obigen Link (http://msdn.microsoft.com/en-US/data/dn469466) gibt es diese Zeile:

Spatial classes (e.g. DbGeography, DbGeometry) have moved from System.Data.Spatial => System.Data.Entity.Spatial

Bevor ich diesen Fehler war immer:

The relationship 'IntakeModel.FK_Assignee_HomeLocation' was not loaded because the type 'IntakeModel.Location' is not available. The following information may be useful in resolving the previous error: The property 'Geo' on the type 'ConsoleApplication3.Location' has a property type of 'System.Data.Spatial.DbGeography' which cannot be mapped to a primitive type.

musste ich einfach diese Datei in meinem Location.cs ändern:

public System.Data.Spatial.DbGeography Geo { get; set; } 

Um dies:

public System.Data.Entity.Spatial.DbGeography Geo { get; set; } 

Problem gelöst. Danke für das Posten dieses Links @Ricky Jones.

+3

Aber System.Data.Entity.Spatial ist in EntityFramework.dll. Sie sagen mir, ich muss einen Verweis auf Entity Framework in meiner POCO Entities-Klassenbibliothek hinzufügen !? – KellySandwiches

+1

@KellySandwiches Ja – user1477388

1

Dieses Problem wurde verursacht, weil Sie einen EF 5.x DbContext Generator für ein EF 6.0 edmx erstellt haben, um dieses Problem zu lösen, müssen Sie nur den alten DbContext Generator löschen und erstellen Sie einen neuen mit EF 6.0 DbContext Generator.

Das funktionierte gut für mich.