Verbindungszeichenfolgen (Entity Framework)

Eine Verbindungszeichenfolge enthält Initialisierungsinformationen, die als Parameter von einem Datenanbieter an eine Datenquelle übergeben werden. Die Syntax ist abhängig vom Datenanbieter, und die Verbindungszeichenfolge wird beim Versuch analysiert, eine Verbindung herzustellen. Von Entity Framework verwendete Verbindungszeichenfolgen enthalten Informationen zum Herstellen einer Verbindung mit dem zugrunde liegenden ADO.NET-Datenanbieter, der Entity Framework unterstützt. Sie enthalten auch Informationen zu den erforderlichen Modell- und Zuordnungsdateien.

Der EntityClient-Anbieter verwendet die Verbindungszeichenfolge für den Zugriff auf Modell- und Zuordnungsmetadaten sowie zum Herstellen einer Verbindung mit der Datenquelle. Mithilfe der ConnectionString-Eigenschaft der EntityConnection kann auf die Verbindungszeichenfolge zugegriffen und diese festgelegt werden. Mit der EntityConnectionStringBuilder-Klasse können Parameter in der Verbindungszeichenfolge programmgesteuert erstellt werden, sie ermöglicht auch den Zugriff auf diese Parameter. Weitere Informationen finden Sie unter Gewusst wie: Erstellen einer EntityConnection-Verbindungszeichenfolge (Entity Framework).

Die Entity Data Model-Tools generieren eine Verbindungszeichenfolge, die in der Konfigurationsdatei der Anwendung gespeichert wird. ObjectContext ruft diese Verbindungsinformationen beim Erstellen von Objektabfragen automatisch ab. Auf die EntityConnection, die von einer ObjectContext-Instanz verwendet wird, kann von der Connection-Eigenschaft aus zugegriffen werden. Weitere Informationen finden Sie unter Verwalten von Verbindungen und Transaktionen (Entity Framework).

Parameter der Verbindungszeichenfolge

Das Format einer Verbindungszeichenfolge besteht aus einer durch Semikolons getrennten Liste mit Schlüssel-Wert-Parameterpaaren:

keyword1=value; keyword2=value;

Ein Gleichheitszeichen (=) verbindet jedes Schlüsselwort mit seinem Wert. Bei den Schlüsselwörtern spielt die Groß- und Kleinschreibung keine Rolle, und Leerzeichen zwischen den Schlüssel-Wert-Paaren werden ignoriert. Je nach Datenquelle ist jedoch bei den Werten auf die Groß-/Kleinschreibung zu achten. Alle Werte, die ein Semikolon, ein einfaches oder ein doppeltes Anführungszeichen enthalten, müssen in doppelte Anführungszeichen eingeschlossen werden. Die folgende Tabelle enthält die gültigen Namen für Schlüsselwortwerte im ConnectionString.

Schlüsselwort Beschreibung

Provider

Erforderlich, wenn das Schlüsselwort Name nicht angegeben ist. Der Anbietername, mit dem das DbProviderFactory-Objekt für den zugrunde liegenden Anbieter abgerufen wird. Dieser Wert ist konstant.

Wenn in einer Entitätsverbindungszeichenfolge nicht das Schlüsselwort Name eingefügt wurde, ist für das Schlüsselwort Provider ein nicht leerer Wert erforderlich. Dieses Schlüsselwort und das Schlüsselwort Name schließen sich gegenseitig aus.

Provider Connection String

Optional. Gibt die anbieterspezifische Verbindungszeichenfolge an, die an die zugrunde liegende Datenquelle übergeben wird. Diese Verbindungszeichenfolge wird mithilfe gültiger Schlüsselwort-Wert-Paare für den Datenanbieter ausgedrückt. Eine ungültige Provider Connection String löst bei der Auswertung durch die Datenquelle einen Laufzeitfehler aus.

Dieses Schlüsselwort und das Schlüsselwort Name schließen sich gegenseitig aus.

Der Wert der Provider Connection String muss durch Anführungszeichen eingeschlossen sein. Im Folgenden finden Sie ein Beispiel:

Provider Connection String ="Server=serverName; User ID = userID";

Das folgende Beispiel ist nicht funktionsfähig:

Provider Connection String =Server=serverName; User ID = userID

Metadata

Erforderlich, wenn das Schlüsselwort Name nicht angegeben ist. Eine durch senkrechte Striche getrennte Liste von Verzeichnissen, Dateien und Ressourcenspeicherorten, die nach Metadaten und Mappinginformationen durchsucht werden sollen. Das Folgende ist ein Beispiel:

Metadata=

c:\model | c:\model\sql\mapping.msl;

Leerzeichen zu beiden Seiten des senkrechten Strichs werden ignoriert.

Dieses Schlüsselwort und das Schlüsselwort Name schließen sich gegenseitig aus.

Name

Der Verbindungsname kann von der Anwendung optional in einer Anwendungskonfigurationsdatei angegeben werden, die die erforderlichen Verbindungszeichenfolgen-Werte mit den Schlüsselwort-Wert-Paaren enthält. In diesem Fall können diese nicht direkt in der Verbindungszeichenfolge bereitgestellt werden. Das Schlüsselwort Name ist in einer Konfigurationsdatei nicht zulässig.

Wenn das Schlüsselwort Name in der Verbindungszeichenfolge nicht eingefügt wurde, ist für das Provider-Schlüsselwort ein nicht leerer Wert erforderlich.

Dieses Schlüsselwort und alle anderen Schlüsselwörter für Verbindungszeichenfolgen schließen sich gegenseitig aus.

Im Folgenden finden Sie ein Beispiel einer Verbindungszeichenfolge für das AdventureWorks Sales-Modell, das in der Konfigurationsdatei der Anwendung gespeichert ist:

<connectionStrings>
    <add name="AdventureWorksEntities" 
         connectionString="metadata=.\AdventureWorks.csdl|.\AdventureWorks.ssdl|.\AdventureWorks.msl;
         provider=System.Data.SqlClient;provider connection string='Data Source=localhost;
         Initial Catalog=AdventureWorks;Integrated Security=True;Connection Timeout=60;
         multipleactiveresultsets=true'" providerName="System.Data.EntityClient" />
</connectionStrings>

Modell- und Zuordnungsdateispeicherorte

Der Metadata-Parameter enthält eine Liste mit Speicherorten, an denen der EntityClient-Anbieter nach Modell- und Zuordnungsdateien suchen kann. Modell- und Zuordnungsdateien werden häufig im Verzeichnis der ausführbaren Anwendungsdatei bereitgestellt. Diese Dateien können auch in einem anderen Speicherort oder als eingebettete Ressource in der Anwendung bereitgestellt werden.

Eingebettete Ressourcen werden wie folgt angegeben:

Metadata=res://<assemblyFullName>/<resourceName>. 

Mit den folgenden Optionen kann der Speicherort einer eingebetteten Ressource festgelegt werden:

Option

Beschreibung

assemblyFullName

Der vollständige Name einer Assembly mit der eingebetteten Ressource. Der Name besteht wie folgt aus dem einfachen Namen, dem Versionsnamen, der unterstützten Kultur und dem öffentlichen Schlüssel:

ResourceLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

Ressourcen können in jede Assembly eingebettet werden, auf die von der Anwendung zugegriffen werden kann.

Wenn Sie für assemblyFullName einen Platzhalter (*) eingeben, sucht die Entity Framework-Laufzeit in folgenden Speicherorten und in dieser Reihenfolge nach Ressourcen:

  1. Die aufrufende Assembly.

  2. Die Assemblys, auf die verwiesen wird.

  3. Die Assemblys im BIN-Verzeichnis einer Anwendung.

Wenn sich die Dateien nicht in einem dieser Speicherorte befinden, wird eine Ausnahme ausgelöst.

Cc716756.note(de-de,VS.100).gifHinweis:
Wenn Sie Platzhalter verwenden (*), sucht Entity Framework in allen Assemblys nach Ressourcen mit entsprechendem Namen.Wenn anstelle des Platzhalters der Assemblyname eingegeben wird, verbessert sich die Suchleistung.

resourceName

Der Name der enthaltenen Ressource, z. B. AdvendtureWorksModel.csdl. Die Metadatendienste suchen nur nach Dateien oder Ressourcen mit folgenden Erweiterungen: CSDL, SSDL oder MSL. Wenn resourceName nicht angegeben wurde, werden alle Metadatenressourcen geladen. Die Ressourcen sollten innerhalb einer Assembly eindeutige Namen haben. Wenn in der Assembly mehrere Dateien mit gleichem Namen in verschiedenen Verzeichnissen definiert sind, muss für den resourceName die Ordnerstruktur vor dem Ressourcennamen angegeben werden, z. B. Ordnername.Dateiname.csdl.

resourceName ist nicht erforderlich, wenn für assemblyFullName ein Platzhalter (*) angegeben wird.

Cc716756.note(de-de,VS.100).gifHinweis:
Die Leistung kann durch das Einbetten von Ressourcen in die aufrufende Assembly verbessert werden. In nicht webbasierten Szenarien, in denen innerhalb der aufrufenden Assembly keine Verweise auf zugrunde liegende Zuordnungs- und Metadatendateien vorhanden sind, ist dies allerdings nicht möglich.

In folgendem Beispiel werden alle Modell- und Zuordnungsdateien in die aufrufende Assembly, in Assemblys, auf die verwiesen wird, und in andere Assemblys im BIN-Verzeichnis einer Anwendung geladen.

Metadata=res://*/

Im folgenden Beispiel werden die Datei model.csdl aus der AdventureWorks-Assembly sowie die Dateien model.ssdl und model.msl aus dem Standardverzeichnis der ausgeführten Anwendung geladen.

Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.csdl|model.ssdl|model.msl

Im folgenden Beispiel werden die drei festgelegten Ressourcen aus der angegebenen Assembly geladen.

Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.csdl| 
res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.ssdl| 
res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.msl

Im folgenden Beispiel werden alle eingebetteten CSDL-, MSL- und SSDL-Ressourcen aus der Assembly geladen.

Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/

Im folgenden Beispiel werden alle Ressourcen aus dem geladenen Assemblyspeicherort in den relativen Dateipfad, der um datadir\metadata\ erweitert wird, geladen.

Metadata=datadir\metadata\

Im folgenden Beispiel werden alle Ressourcen aus dem geladenen Assemblyspeicherort in den relativen Dateipfad geladen.

Metadata=.  \  

Unterstützung für die |DataDirectory|-Ersatzzeichenfolge und den Stamm-Operator der Webanwendung (~)

DataDirectory und der ~-Operator werden in ConnectionString als Teil der Metadata- und Provider Connection String-Schlüsselwörter verwendet. Die EntityConnection leitet den DataDirectory- und den ~-Operator an MetadataWorkspace bzw. den Speicheranbieter weiter.

Begriff Beschreibung

|DataDirectory|

Löst den relativen Pfad in Zuordnungs- und Metadatendateien auf. Dies ist der Wert, der durch die AppDomain.SetData("DataDirectory", objValue)-Methode festgelegt wird. Die DataDirectory-Ersatzzeichenfolge muss von senkrechten Strichen eingeschlossen sein, zwischen dem Namen und den senkrechten Strichen dürfen sich keine Leerzeichen befinden. Der DataDirectory-Name unterscheidet nicht zwischen Groß- und Kleinschreibung.

Wenn ein physisches Verzeichnis mit dem Namen DataDirectory als ein Member der Metadatenpfadliste übergeben werden muss, sollten am Anfang und/oder am Ende des Namens Leerzeichen hinzugefügt werden, z. B.: Metadata="DataDirectory1 | DataDirectory | DataDirectory2". Eine ASP.NET-Anwendung löst |DataDirectory| in den Ordner <Anwendungsstamm>/app_data auf.

~

Löst zum Webanwendungsstamm auf. Wenn sich das Zeichen "~" am Anfang einer Zeichenfolge befindet, wird es stets als Stamm-Operator der Webanwendung (~) interpretiert, auch wenn es möglicherweise ein gültiges lokales Unterverzeichnis darstellt. Wenn auf solch ein lokales Unterverzeichnis verwiesen werden soll, sollte der Benutzer ./~ explizit übergeben.

DataDirectory und der ~-Operator sollten nur am Anfang eines Pfads festgelegt werden, da sie an anderen Positionen nicht aufgelöst werden. Entity Framework versucht, ~/data aufzulösen, behandelt /data/~ jedoch wie einen physischen Pfad.

Ein Pfad, der mit dem DataDirectory oder dem ~-Operator beginnt, kann nicht in einen physischen Pfad außerhalb der Struktur des DataDirectory und des ~-Operators aufgelöst werden. Diese Beispielpfade werden aufgelöst: ~, ~/data, ~/bin/Model/SqlServer. Diese Beispielpfade werden nicht aufgelöst: ~/.., ~/../other.

DataDirectory und der ~-Operator können wie folgt erweitert werden, um Unterverzeichnisse einzuschließen: |DataDirectory|\Model, ~/bin/Model

Die Auflösung der DataDirectory-Ersatzzeichenfolge und des ~-Operators ist nicht rekursiv. Wenn DataDirectory z. B. das ~-Zeichen enthält, tritt eine Ausnahme auf. Dies verhindert eine unendliche Rekursion.

Siehe auch

Konzepte

Überlegungen zur Bereitstellung (Entity Framework)
Verwalten von Verbindungen und Transaktionen (Entity Framework)

Weitere Ressourcen

Arbeiten mit Datenanbietern (Entity Framework)
Connection Strings (ADO.NET)