2012-12-17 5 views
7

Dies wurde ein paar Mal gefragt, aber ich konnte keinen der Vorschläge für mich arbeiten lassen.Windows Azure, Entity Framework. Schlüsselwort nicht unterstützt: 'Metadaten'.

Ich habe eine Website und SQL-Datenbank, die ich lokal erstellt und jetzt in Azure bereitgestellt. Die Datenbank ist eine verknüpfte Ressource für die Website. Ich bin in der Lage, die Website zu durchsuchen und ich bin sogar in der Lage, eine Verbindung herzustellen und Abfragen für die Datenbank mithilfe von ADO.Net und einer Standardverbindungszeichenfolge auszuführen.

Das Problem ist, wenn ich versuche, Verbindung mit Entity Framework Ich bekomme Schlüsselwort nicht unterstützt: 'Metadaten'. Ich habe die mehreren aktiven Datensätze entfernt und versucht, " durch 'aber es hat nicht funktioniert. Ich bin völlig auf Ideen fixiert.

+0

Können Sie Ihre vollständige Verbindungszeichenfolge (Servername und -kennwort auslassen) und die von Ihnen verwendete EF-Version und die von Ihnen verwendete Methode (z. B. CodeFirst, ModelFirst, DatabaseFirst). Dann exakte Stack-Trace des Fehlers.MARS ist seit mindestens 2 Jahren kein Problem mit SQL Azure. – astaykov

+0

Entschuldigung. Ich vergesse Dinge um 3 Uhr morgens. Ich habe das auch fertig zum Einfügen. Ich konnte dies beheben, indem ich " durch 'und auch durch Ändern des Verbindungstyps zu benutzerdefinierten wie unten erwähnt ändern. –

Antwort

18

Hier ist meine Verbindungszeichenfolge in dem Azure-Portal definiert, für einen DatabaseFirst Ansatz:

metadata=res://*/mySuperModel.csdl|res://*/mySuperModelModel.ssdl|res://*/mySuperModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=tcp:myServerName.database.windows.net,1433;Initial Catalog=myDatabaseName;User [email protected];Password=myPasswordHere;" 

mit Ihnen Vergleich und beachten Sie, dass der Verbindungstyp "custom" im azur Portal.

+0

Bitte beachten Sie, dass MARS in meiner Verbindungszeichenfolge nicht aktiviert ist, aber ich verwende SQL Azure Federation (die MARS nicht unterstützt). Mit einer regulären SQL Azure-Verbindung können Sie sie sicher aktivieren. – JYL

+0

Danke. Mein Problem war, dass der Verbindungstyp nicht geändert wurde. Wenn Sie diese Option auf "Benutzerdefiniert" setzen –

+0

Das funktioniert - danke !! Bitte beachten Sie alle - gehen Sie zu Azure> App Server, App-Einstellungen ... Ich musste das Start-und Ending von der aufgelisteten Connectionstring entfernen! So leicht zu übersehen, dass sehr kleines Detail. Sie sehen es im obigen Beispiel nicht, weil es nicht dort sein sollte. danke nochmal! – Neville

2

Ich hatte das gleiche Problem wie das OP, aber seine Lösung hat nicht für mich funktioniert.

Es war ein Verbindungsstring Problem, aber nicht mit den Anführungszeichen.

Da es mir zwei Tage gedauert hat, zu lösen vielleicht wird dies jemand helfen anderes:

Die Verbindungszeichenfolge, die [für meine ASP.NET MVC 4.5/Entity Framework 5.0-Anwendung funktioniert, wenn auf Azure gehostet (I entwickeln gegen SQL Server 2012 lokal, aber migrieren Sie die Datenbank in Azure SQL-Datenbank (mit der SQL Database Migration Wizard)). Ich verwende Datenbank zuerst meine .edmx Datei (I erzeugen, um das (Daten) Modell aus der Datenbank) erstellen] ist:

<add name="MYPROJECTENTITIES" connectionString="**metadata=**res://*/MODELS.MYPROJECTMODEL.csdl|res://*/MODELS.MYPROJECTMODEL.ssdl|res://*/MODELS.MYPROJECTMODEL.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=tcp:B6JD5K5EP4.database.windows.net,1433;Initial Catalog=MYPROJECT_DB;Integrated Security=False;User [email protected];Password=MYPASSWORDABC123;**MultipleActiveResultSets=True**;Encrypt=True;TrustServerCertificate=False&quot;" providerName="System.Data.EntityClient"/> 

Der Text in GROSSBUCHSTABEN meine Azure Informationen. Natürlich müssen Sie stattdessen Ihre eigenen verwenden.

Dieser Teil der Verbindungszeichenfolge gab mir Alpträume, und es könnte Ihr Problem auch verursachen:

res://*/Models.MyProjectModel.csdl|res://*/Models.MyProjectModel.ssdl|res://*/Models.MyProjectModel.msl 

Diese Referenzen haben genau das richtige sein. Lass mich wiederholen: Diese Referenzen müssen genau stimmen !!

this article from 2008 („Fehlerbehebung Entity Framework Verbindungszeichenfolgen“), habe ich .NET Reflector im Inneren des MyProjectModel.dll (der Name meiner DLL (wahrscheinlich anders in Ihrem Projekt aussehen Nach der Lektüre), wie er vorschlägt und sicher Genug, die Verbindungszeichenfolge (die für mich vom Entity Framework automatisch generiert wurde!) war falsch. Es enthielt kein Präfix. Sobald ich Models hinzugefügt hatte. Präfix (wie die .csdl/.msl/.ssdl werden innerhalb meiner .dll benannt (wahrscheinlich anders bei Ihnen)), alles hat super funktioniert. Schauen Sie in Ihre .dll und sehen Sie, ob die Namen übereinstimmen. Wenn nicht, ändern Sie sie so, dass sie mit der .dll übereinstimmen. (Lesen Sie den Artikel oben, wenn das, was ich sage, nicht klar genug ist.)

Verwandte Themen