it-swarm.com.de

schlüsselwort nicht unterstützte Datenquelle

Ich habe eine asp.net-mvc-Anwendung mit der Standardmitgliedschaftsdatenbank. Ich greife darauf über das ADO.NET Entity Framework zu. 

Jetzt möchte ich es auf IIS verschieben, aber es sind einige Probleme aufgetreten. Ich musste SQL Server Management Studio installieren, eine neue Datenbank erstellen und dort alle Daten aus der vorherigen .MDF-Datei importieren. Das einzige, was noch zu tun ist (soweit ich weiß), ist die Änderung der Verbindungszeichenfolge. Ich bin jedoch nicht wirklich erfahren und bekomme das Keyword nicht mehr unterstützt: "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?

64
Trimack

Was Sie haben, ist eine gültige ADO.NET-Verbindungszeichenfolge - aber es istNICHTeine 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=&quot;Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False&quot;" 
      providerName="System.Data.EntityClient" /> 
</connectionStrings>

Ihnen fehlen alle metadata=- und providerName=-Elemente in Ihrer EF-Verbindungszeichenfolge ...... Sie haben grundsätzlich nur das, was im provider connection string-Teil enthalten ist.

Verwenden Sie den EDMX-Designer, und erstellen Sie in Ihrer web.config oder app.config eine gültige EF-Verbindungszeichenfolge.

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" 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 benötigen, geben Sie providerName=System.Data.SqlClient ==> straight ADO.NET SQL Server-Verbindungszeichenfolge ohne alle EF-Zusätze an

120
marc_s

Dieses Problem kann auftreten, wenn Sie auf Ihre Verbindungszeichenfolgen für web.config (oder app.config) über den Index verweisen ...

var con = ConfigurationManager.ConnectionStrings[0].ConnectionString;

Die auf null basierende Verbindungszeichenfolge ist nicht immer die in Ihrer Konfigurationsdatei, da sie andere standardmäßig von weiter oben im Stack erbt .

Es wird empfohlen, auf Ihre Verbindung anhand des Namens zuzugreifen ...

var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;

oder um das connnectionStrings -Element zuerst in Ihrer Konfigurationsdatei zu löschen ...

<connectionStrings>
    <clear/>
    <add name="MyConnection" connectionString="...
5
Baldy

Ich bekam das gleiche Problem.
Aber dieser Code funktioniert gut. Versuchen Sie es.

<add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
2
Satish Singh

Ich weiß, dass dies ein alter Beitrag ist, aber ich habe in letzter Zeit den gleichen Fehler erhalten. Also, was es wert ist, hier ist eine andere Lösung:

Dies ist normalerweise ein Fehler bei der Verbindungszeichenfolge. Bitte überprüfen Sie das Format Ihrer Verbindungszeichenfolge. Sie können nach 'Entity Framework-Verbindungszeichenfolge' suchen oder die oben genannten Vorschläge befolgen.  

In meinem Fall war meine Verbindungszeichenfolge jedoch in Ordnung und der Fehler wurde durch etwas völlig anderes verursacht. Ich hoffe, das hilft jemandem:

  1. 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, der Fehler war nicht sehr offensichtlich, da er nicht in meinem EDMX angezeigt wurde.) Ausgabefenster, stattdessen wurde es in Visual Studio im Fenster "Fehlerliste" unter "Warnungen" abgelegt. Ich habe diesen Fehler behoben, indem ich die fehlende Tabelle meiner Datenbank hinzugefügt habe. Aber ich war tatsächlich damit beschäftigt, eine gespeicherte Prozedur hinzuzufügen, und erhielt immer noch den Fehler "Datenquelle". Siehe unten, wie ich sie gelöst habe:

  2. Fehler bei gespeicherter Prozedur : Ich habe versucht, eine gespeicherte Prozedur hinzuzufügen. Jedes Mal, wenn ich sie über das EDMX-Entwurfsfenster hinzufügte, erhielt ich einen Fehler "Datenquelle". Die Lösung bestand darin, die gespeicherte Prozedur als leer hinzuzufügen (ich habe den gespeicherten Namen und die Deklaration der Prozedur beibehalten, den Inhalt der gespeicherten Prozedur jedoch gelöscht und durch 'select 1' ersetzt und das Hinzufügen zum EDMX wiederholt). Es funktionierte! Vermutlich mochte EF nichts in meiner gespeicherten Prozedur. Nachdem ich das proc zu EF hinzugefügt hatte, konnte ich den Inhalt des proc in meiner Datenbank so aktualisieren, wie ich es wollte, und es funktioniert. Der Fehler "Datenquelle" wurde behoben.

verrücktheit

0
Spyder

Ich hatte dieses Problem, als ich anfing, Entity Framework zu verwenden. Dies passierte, als ich die alte SQL-Server-Verbindung nicht auf EntityFrameWork-Verbindung umstellte. 

Lösung: In der Datei, in der die Verbindung über die web.config-Datei hergestellt wird "add name =" Entities "connectionString = XYZ", Vergewissern Sie sich, dass Sie auf die richtige Verbindung verweisen musste das tun

        public static string MyEntityFrameworkConnection
    {
        get
        {
             return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString;
        }

    }

rufen Sie MyEntityFrameworkConnection immer dann 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 erstellt, wenn der Lösung ein Entitätsmodell hinzugefügt wird. 

0
Mubarak

Ich habe die gleiche Fehlermeldung erhalten und dann meine Verbindungszeichenfolge wie folgt aktualisiert:

<add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

Versuchen Sie dies, um Ihr Problem zu lösen.

0
Hasiya