Beim Instanziieren eines "ADO.NET Entity Framework"-Kontexts ohne Parameter im Konstruktor erwartet der Kontext, dass es eine passende Verbindungszeichenfolge (engl. Connection String) in der Konfigurationsdatei gibt.
Die Instanziierung eines Objektkontextes wie zum Beispiel
de.WWWings.Test.Modelle.EF6.WWWings6Entities context =
new de.WWWings.Test.Modelle.EF6.WWWings6Entities();
greift auf
<connectionStrings>
<add name="WWWings6Entities" connectionString="metadata=
res://*/Modelle.EF6.WWWings6.csdl|
res://*/Modelle.EF6.WWWings6.ssdl|
res://*/Modelle.EF6.WWWings6.msl;
provider=System.Data.SqlClient;
provider connection string="
Data Source=.\sqlexpress;
Initial Catalog=WWWings6;
Integrated Security=True;
MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
</connectionStrings>
in der Konfigurationsdatei zurück.
In manchen Situationen möchte man diesen Automatismus nicht. Es lässt sich dann im Konstruktor des Kontexts entweder den Namen eines anderen Konfigurationseintrags angeben, etwa
de.WWWings.Test.Modelle.EF6.WWWings6Entities context =
new de.WWWings.Test.Modelle.EF6.WWWings6Entities
("name=EigeneVerbindung");
oder aber eine komplette Verbindungszeichenfolge.
Wenn man aber einfach den Eintrag aus der Konfigurationsdatei in den Programmcode kopiert, wird das nicht funktionieren. Die Befehlsfolge
string CS =
@"metadata=res://*/Modelle.EF6.WWWings6.csdl|
res://*/Modelle.EF6.WWWings6.ssdl|
res://*/Modelle.EF6.WWWings6.msl;
provider=System.Data.SqlClient;
provider connection string="
Data Source=.\sqlexpress;
Initial Catalog=WWWings6;
Integrated Security=True;
MultipleActiveResultSets=True"";
de.WWWings.Test.Modelle.EF6.WWWings6Entities context =
new de.WWWings.Test.Modelle.EF6.WWWings6Entities(CS);
führt zum Laufzeitfehler: Keyword not supported: 'data source'.
Zu beachten ist, dass die XML-Umschreibung """ durch ein einfaches Anführungszeichen (oder ein doppeltes Doppelanführungszeichen) zu ersetzen ist.
So klappt es:
string CS =
@"metadata=res://*/Modelle.EF6.WWWings6.csdl|
res://*/Modelle.EF6.WWWings6.ssdl|
res://*/Modelle.EF6.WWWings6.msl;
provider=System.Data.SqlClient;
provider connection string=""Data Source=.\sqlexpress;
Initial Catalog=WWWings6;
Integrated Security=True;MultipleActiveResultSets=True""";
de.WWWings.Test.Modelle.EF6.WWWings6Entities context =
new de.WWWings.Test.Modelle.EF6.WWWings6Entities(CS);
()