Udostępnij za pośrednictwem


Parametry połączenia w programie ADO.NET Entity Framework

Parametry połączenia zawiera informacje inicjowania przekazywane jako parametr od dostawcy danych do źródła danych. Składnia zależy od dostawcy danych, a parametry połączenia jest analizowana podczas próby otwarcia połączenia. Parametry połączenia używane przez program Entity Framework zawierają informacje używane do nawiązywania połączenia z podstawowym dostawcą danych ADO.NET obsługującym program Entity Framework. Zawierają one również informacje o wymaganym modelu i plikach mapowania.

Parametry połączenia jest używany przez dostawcę EntityClient podczas uzyskiwania dostępu do modelu i mapowania metadanych oraz nawiązywania połączenia ze źródłem danych. Dostęp do parametry połączenia można uzyskać lub ustawić za pomocą ConnectionString właściwości EntityConnection. Klasa EntityConnectionStringBuilder może służyć do programowego konstruowania lub uzyskiwania dostępu do parametrów w parametry połączenia.

Narzędzia modelu danych jednostki generują parametry połączenia przechowywane w pliku konfiguracji aplikacji. ObjectContext pobiera te informacje o połączeniu automatycznie podczas tworzenia zapytań dotyczących obiektów. Dostęp EntityConnection do używanego ObjectContext Connection przez wystąpienie można uzyskać z właściwości .

Składnia parametrów połączenia

Aby dowiedzieć się więcej o ogólnej składni parametry połączenia, zobacz Składnia parametrów połączenia | Parametry połączenia w ADO.NET.

Parametry połączenia

W poniższej tabeli wymieniono prawidłowe nazwy wartości słów kluczowych w tabeli ConnectionString.

Słowo kluczowe opis
Provider Wymagane, jeśli Name słowo kluczowe nie zostało określone. Nazwa dostawcy, która jest używana do pobierania DbProviderFactory obiektu dla bazowego dostawcy. Ta wartość jest stała.

Jeśli słowo Name kluczowe nie jest uwzględnione w parametry połączenia jednostki, wymagana jest niepusta wartość słowa kluczowegoProvider. To słowo kluczowe wzajemnie wyklucza się ze Name słowem kluczowym.
Provider Connection String Opcjonalny. Określa parametry połączenia specyficzne dla dostawcy, które są przekazywane do bazowego źródła danych. Ta parametry połączenia zawiera prawidłowe pary słów kluczowych/wartości dla dostawcy danych. Provider Connection String Nieprawidłowy błąd spowoduje błąd czasu wykonywania, gdy zostanie on oceniony przez źródło danych.

To słowo kluczowe wzajemnie wyklucza się ze Name słowem kluczowym.

Pamiętaj o ucieczce wartości zgodnie z ogólną składnią ADO.NET parametry połączenia. Rozważmy na przykład następujące parametry połączenia: Server=serverName; User ID = userID. Musi zostać unikniętą, ponieważ zawiera średnik. Ponieważ nie zawiera podwójnych cudzysłowów, mogą być używane do ucieczki:

Provider Connection String ="Server=serverName; User ID = userID";
Metadata Wymagane, jeśli Name słowo kluczowe nie zostało określone. Rozdzielana potokami lista katalogów, plików i lokalizacji zasobów, w których można wyszukać metadane i informacje o mapowaniu. Poniżej przedstawiono przykład:

Metadata=

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

Puste spacje po każdej stronie separatora potoku są ignorowane.

To słowo kluczowe wzajemnie wyklucza się ze Name słowem kluczowym.
Name Aplikacja może opcjonalnie określić nazwę połączenia w pliku konfiguracji aplikacji, który udostępnia wymagane wartości słowa kluczowego/wartości parametry połączenia. W takim przypadku nie można podać ich bezpośrednio w parametry połączenia. Słowo Name kluczowe nie jest dozwolone w pliku konfiguracji.

Jeśli słowo Name kluczowe nie jest uwzględnione w parametry połączenia, wymagane są wartości inne niż puste dla słowa kluczowego dostawca.

To słowo kluczowe wyklucza się wzajemnie ze wszystkimi innymi słowami kluczowymi parametry połączenia.

Lokalizacje plików modelu i mapowania

Parametr Metadata zawiera listę lokalizacji dostawcy do EntityClient wyszukiwania plików modelu i mapowania. Pliki modelu i mapowania są często wdrażane w tym samym katalogu co plik wykonywalny aplikacji. Te pliki można również wdrożyć w określonej lokalizacji lub dołączyć jako zasób osadzony w aplikacji.

Zasoby osadzone są określane w następujący sposób:

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

Dostępne są następujące opcje definiowania lokalizacji zasobu osadzonego:

Opcja Opis
assemblyFullName Pełna nazwa zestawu z osadzonym zasobem. Nazwa zawiera prostą nazwę, nazwę wersji, obsługiwaną kulturę i klucz publiczny w następujący sposób:

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

Zasoby można osadzać w dowolnym zestawie, który jest dostępny dla aplikacji.

Jeśli określisz symbol wieloznaczny (*) dla assemblyFullNameelementu , środowisko uruchomieniowe programu Entity Framework wyszuka zasoby w następujących lokalizacjach w następującej kolejności:

1. Zestaw wywołujący.
2. Przywołyne zestawy.
3. Zestawy w katalogu bin aplikacji.

Jeśli pliki nie znajdują się w jednej z tych lokalizacji, zostanie zgłoszony wyjątek. Uwaga: jeśli używasz symbolu wieloznakowego (*), program Entity Framework musi przejrzeć wszystkie zestawy dla zasobów o poprawnej nazwie. Aby zwiększyć wydajność, określ nazwę zestawu zamiast symbolu wieloznakowego.
resourceName Nazwa dołączonego zasobu, takiego jak AdventureWorksModel.csdl. Usługi metadanych będą szukać tylko plików lub zasobów z jednym z następujących rozszerzeń: csdl, ssdl lub msl. Jeśli resourceName nie zostanie określony, zostaną załadowane wszystkie zasoby metadanych. Zasoby powinny mieć unikatowe nazwy w zestawie. Jeśli wiele plików o tej samej nazwie jest zdefiniowanych w różnych katalogach w zestawie, resourceName musi zawierać strukturę folderów przed nazwą zasobu, na przykład FolderName.FileName.csdl.

resourceName nie jest wymagane, gdy określisz symbol wieloznaczny (*) dla assemblyFullName.

Uwaga

Aby zwiększyć wydajność, osadź zasoby w zestawie wywołującym, z wyjątkiem scenariuszy innych niż sieci Web, w których nie ma odwołania do bazowych plików mapowania i metadanych w zestawie wywołującym.

Poniższy przykład ładuje wszystkie pliki modelu i mapowania w zestawie wywołującym, przywoływały zestawy i inne zestawy w katalogu bin aplikacji.

Metadata=res://*/

Poniższy przykład ładuje plik model.csdl z zestawu AdventureWorks i ładuje pliki model.ssdl i model.msl z domyślnego katalogu uruchomionej aplikacji.

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

Poniższy przykład ładuje trzy określone zasoby z określonego zestawu.

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

Poniższy przykład ładuje wszystkie zasoby osadzone z rozszerzeniami .csdl, msl i .ssdl z zestawu.

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

Poniższy przykład ładuje wszystkie zasoby w ścieżce pliku względnego oraz "datadir\metadata\" z załadowanej lokalizacji zestawu.

Metadata=datadir\metadata\

Poniższy przykład ładuje wszystkie zasoby w ścieżce pliku względnego z załadowanej lokalizacji zestawu.

Metadata=.\

Obsługa |DataDirectory| Ciąg podstawienia i operator główny aplikacji sieci Web (~)

DataDirectory operator ~ jest używany jako ConnectionString część Metadata słów kluczowych i Provider Connection String . DataDirectory Operator EntityConnection i ~ przekazuje odpowiednio do MetadataWorkspace i dostawcy sklepu.

Okres opis
&#124;DataDirectory&#124; Rozpoznaje ścieżkę względną do plików mapowania i metadanych. Jest to wartość ustawiona AppDomain.SetData("DataDirectory", objValue) za pomocą metody . DataDirectory Ciąg podstawienia musi być otoczony znakami potoku i nie może istnieć odstęp między jego nazwą a znakami potoku. Nazwa DataDirectory nie uwzględnia wielkości liter.

Jeśli katalog fizyczny o nazwie "DataDirectory" musi zostać przekazany jako element członkowski listy ścieżek metadanych, dodaj biały znak do obu stron nazwy. Na przykład: Metadata="DataDirectory1 &#124; DataDirectory &#124; DataDirectory2". Aplikacja ASP.NET rozwiązuje problem |DataDirectory| w folderze "<katalog główny>/app_data aplikacji".
~ Rozpoznaje katalog główny aplikacji sieci Web. Znak ~ na pozycji wiodącej jest zawsze interpretowany jako operator główny aplikacji internetowej (~), chociaż może reprezentować prawidłowy podkatalog lokalny. Aby odwołać się do takiego podkatalogu lokalnego, użytkownik powinien jawnie przekazać ./~element .

DataDirectory operator ~ powinien być określony tylko na początku ścieżki, nie są one rozpoznawane w żadnym innym położeniu. Program Entity Framework spróbuje rozwiązać problem ~/data, ale będzie traktowany /data/~ jako ścieżka fizyczna.

Ścieżka rozpoczynająca się od DataDirectory operatora lub ~ nie może rozpoznać ścieżki fizycznej poza gałęzią DataDirectory operatora i ~. Na przykład następujące ścieżki rozpoznają: ~, ~/data, ~/bin/Model/SqlServer. Następujące ścieżki nie rozwiążą problemu: ~/.., ~/../other.

DataDirectory operator ~ można rozszerzyć w celu uwzględnienia katalogów podrzędnych w następujący sposób: |DataDirectory|\Model, ~/bin/Model

Rozdzielczość DataDirectory ciągu podstawienia i operator ~ jest niecykliczny. Na przykład w przypadku DataDirectory dołączania ~ znaku wystąpi wyjątek. Zapobiega to nieskończonej rekursji.

Zobacz też