Schlüsselwort nicht unterstützte Datenquelle

asp.net connection-string entity-framework

Frage

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, 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?

Akzeptierte Antwort

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

Ihnen fehlen alle Elemente metadata= und providerName= in Ihrer EF-Verbindungszeichenfolge .... Sie haben grundsätzlich nur das, was im Teil der provider connection string 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 ==> gerade ADO.NET SQL Server-Verbindungszeichenfolge ohne alle EF-Zusätze an


Beliebte Antwort

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 andere standardmäßig von weiter oben im Stapel erben .

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="...


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum