Ich habe eine asp.net-mvc-Anwendung mit der Standardmitgliedschaftsdatenbank. Ich greife über ADO.NET Entity Framework darauf zu.
Jetzt möchte ich es auf IIS verschieben, aber es sind mehrere Probleme aufgetreten. Ich musste SQL Server Management Studio installieren, neue Datenbank erstellen und dort alle Daten aus der vorherigen MDF-Datei importieren. Das einzige, was ich noch tun muss (soweit ich weiß), ist, zur Verbindungszeichenfolge zu wechseln. Ich bin jedoch nicht wirklich erfahren damit und bekomme immer wieder das Keyword, das nicht unterstützt wird: 'Datenquelle'. Ausnahme. Hier ist meine Verbindungszeichenfolge:
<add name="ASPNETDBEntities"
connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;"
providerName="System.Data.EntityClient" />
Irgendwelche Ideen, was ist los?
Antworten:
Was Sie haben, ist eine gültige ADO.NET-Verbindungszeichenfolge - aber KEINE gültige Entity Framework-Verbindungszeichenfolge.
Die EF-Verbindungszeichenfolge würde ungefähr so aussehen:
<connectionStrings> <add name="NorthwindEntities" connectionString= "metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl; provider=System.Data.SqlClient; provider connection string="Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False"" providerName="System.Data.EntityClient" /> </connectionStrings>
Sie vermissen alle
metadata=
undproviderName=
Elemente in Ihrer EF-Verbindungszeichenfolge. Sie haben im Grunde nur das, was in demprovider connection string
Teil enthalten ist.Wenn Sie den EDMX-Designer verwenden, sollten Sie in Ihrer web.config oder app.config eine gültige EF-Verbindungszeichenfolge für Sie erstellen.
Marc
UPDATE: OK, ich verstehe, was Sie versuchen: Sie benötigen eine zweite "ADO.NET" -Verbindungszeichenfolge nur für die ASP.NET-Benutzer- / Mitgliedschaftsdatenbank. Ihre Zeichenfolge ist in Ordnung, aber der Anbietername ist falsch - es müsste "System.Data.SqlClient" sein - diese Verbindung verwendet kein ENtity Framework - geben Sie dann nicht den "EntityClient" dafür an!
<add name="ASPNETMembership" connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" providerName="System.Data.SqlClient" />
Wenn Sie
providerName=System.Data.EntityClient
==> Entity Framework- Verbindungszeichenfolge angeben (mit den Metadaten = und allem).Wenn Sie
providerName=System.Data.SqlClient
==> gerade ADO.NET SQL Server-Verbindungszeichenfolge ohne alle EF-Ergänzungen benötigen und angebenquelle
Dieses Problem kann auftreten, wenn Sie Ihre Verbindungszeichenfolgen für web.config (oder app.config) nach Index referenzieren ...
var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;
Die auf Null basierende Verbindungszeichenfolge ist nicht immer diejenige in Ihrer Konfigurationsdatei, da sie standardmäßig andere von weiter oben im Stapel erbt .
Die empfohlenen Ansätze sind, über Ihren Namen auf Ihre Verbindung zuzugreifen ...
var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;
oder um zuerst das connnectionStrings-Element in Ihrer Konfigurationsdatei zu löschen ...
<connectionStrings> <clear/> <add name="MyConnection" connectionString="...
quelle
Ich hatte das gleiche Problem.
aber dieser Code funktioniert gut, probieren Sie es aus.
<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
quelle
Ich hatte dieses Problem, als ich mit der Verwendung von Entity Framework begann. Es trat auf, als ich die alte SQL Server-Verbindung nicht in EntityFrameWork-Verbindung änderte.
Lösung: Stellen Sie in der Datei, in der die Verbindung über die web.config-Datei "add name =" Entities "connectionString = XYZ" hergestellt wird, sicher, dass Sie sich auf die richtige Verbindung beziehen. In meinem Fall musste ich dies tun
public static string MyEntityFrameworkConnection { get { return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString; } }
Rufen Sie MyEntityFrameworkConnection auf, wenn eine Verbindung hergestellt werden muss.
private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection;
Hinweis: Die Verbindung in der Datei web.config wird automatisch generiert, wenn der Lösung ein Entitätsmodell hinzugefügt wird.
quelle
Ich weiß, dass dies ein alter Beitrag ist, aber ich habe kürzlich den gleichen Fehler erhalten. Für das, was es wert ist, ist hier eine andere Lösung:
Dies ist normalerweise ein Verbindungszeichenfolgenfehler. Überprüfen Sie das Format Ihrer Verbindungszeichenfolge. Sie können nach "Entity Framework-Verbindungszeichenfolge" suchen oder den obigen Vorschlägen folgen.
In meinem Fall war meine Verbindungszeichenfolge jedoch in Ordnung und der Fehler wurde durch etwas völlig anderes verursacht. Ich hoffe, dies hilft jemandem:
Zuerst hatte ich einen EDMX-Fehler : Es gab eine neue Datenbanktabelle im EDMX und die Tabelle war nicht in meiner Datenbank vorhanden (komisch ist der Fehler, dass der Fehler nicht sehr offensichtlich war, weil er stattdessen nicht in meinem EDMX- oder Ausgabefenster angezeigt wurde Es wurde im Visual Studio im Fenster 'Fehlerliste' unter 'Warnungen' versteckt. Ich habe diesen Fehler behoben, indem ich die fehlende Tabelle zu meiner Datenbank hinzugefügt habe. Aber ich war tatsächlich damit beschäftigt, eine gespeicherte Prozedur hinzuzufügen und bekam immer noch den Fehler 'Datenquelle'. Sehen Sie unten, wie ich ihn behoben habe:
Fehler bei gespeicherten Prozeduren : Ich habe versucht, eine gespeicherte Prozedur hinzuzufügen, und jedes Mal, wenn ich sie über das EDMX-Entwurfsfenster hinzufügte, wurde der Fehler "Datenquelle" angezeigt. Die Lösung bestand darin, die gespeicherte Prozedur als leer hinzuzufügen (ich behielt den Namen und die Deklaration des gespeicherten Prozesses bei, löschte jedoch den Inhalt des gespeicherten Prozesses und ersetzte ihn durch 'select 1' und versuchte erneut, ihn dem EDMX hinzuzufügen). Es funktionierte! Vermutlich mochte EF etwas in meinem gespeicherten Prozess nicht. Nachdem ich den Prozess zu EF hinzugefügt hatte, konnte ich den Inhalt des Prozesses in meiner Datenbank auf den gewünschten Wert aktualisieren und es funktioniert. Der Fehler "Datenquelle" wurde behoben.
Verrücktheit
quelle
Ich habe den gleichen Fehler erhalten und dann meine Verbindungszeichenfolge wie unten aktualisiert.
<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
Versuchen Sie dies, es wird Ihr Problem lösen.
quelle