Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Строка подключения содержит сведения для инициализации, передаваемые в виде параметра от поставщика данных в источник данных. Синтаксис зависит от поставщика данных, и при попытке открыть соединение строка соединения анализируется. Строки соединения платформы Entity Framework содержат сведения, которые используются для соединения с базовым поставщиком данных ADO.NET, поддерживающим Entity Framework. Они также содержат сведения о необходимых файлах модели и файлах сопоставления.
Строка соединения используется поставщиком EntityClient для доступа к метаданным модели и сопоставления, а также для соединения с источником данных. Свойство ConnectionString объекта EntityConnection позволяет получить доступ к строке соединения или задать ее значение. Класс EntityConnectionStringBuilder может использоваться для построения или обработки программным путем параметров строки соединения.
Средства модели данных сущности создают строку подключения, которая хранится в файле конфигурации приложения. ObjectContext автоматически извлекает сведения о соединении при создании запросов объекта. Доступ к объекту EntityConnection, используемому экземпляром ObjectContext, можно получить через свойство Connection.
Синтаксис строки подключения
Общие сведения о синтаксисе строка подключения см. в разделе "Синтаксис строки подключения" | Строки подключения в ADO.NET.
Параметры строки соединения
В следующей таблице перечислены допустимые имена для значений ключевых слов в строке соединения ConnectionString.
| Ключевое слово | Описание |
|---|---|
Provider |
Необходимо, если не задано ключевое слово Name. Имя поставщика, которое используется для получения объекта DbProviderFactory, относящегося к базовому поставщику. Это - постоянное значение.Если в строке соединения сущности не содержится ключевое слово Name, то необходимо задать непустое значение для ключевого слова Provider. Это ключевое слово является взаимоисключающим по отношению к ключевому слову Name. |
Provider Connection String |
Необязательно. Указывает зависящую от поставщика строку соединения, которая передается в базовый источник данных. Эта строка подключения содержит допустимые пары ключевых слов и значений для поставщика данных. Недопустимое Provider Connection String приведет к ошибке выполнения при его оценке источником данных.Это ключевое слово является взаимоисключающим по отношению к ключевому слову Name.Не забудьте избежать значения в соответствии с общим синтаксисом ADO.NET строка подключения. Рассмотрим, например, следующие строка подключения: Server=serverName; User ID = userID Его нужно экранировать, так как он содержит точку с запятой. Поскольку текст не содержит двойных кавычек, их можно использовать для экранирования.Provider Connection String ="Server=serverName; User ID = userID"; |
Metadata |
Необходимо, если не задано ключевое слово Name. Список каталогов, файлов и расположений ресурсов, разделённый символом '|', где осуществляется поиск сведений о метаданных и сопоставлениях. Ниже приведен пример:Metadata=c:\model | c:\model\sql\mapping.msl;Пустые пространства, расположенные с обеих сторон вертикальной черты (|), не учитываются. Это ключевое слово является взаимоисключающим по отношению к ключевому слову Name. |
Name |
При необходимости можно задать имя соединения в файле конфигурации приложения, который обеспечивает необходимые пары ключевых слов и значений для строки соединения. В этом случае нельзя задавать эти пары непосредственно в строке соединения. Применение ключевого слова Name в файле конфигурации не допускается.Если в строке соединения не содержится ключевое слово Name, то необходимо задать непустые значения для ключевого слова Provider.Это ключевое слово является взаимоисключающим по отношению к другим ключевым словам строки соединения. |
Местоположения файлов моделей и сопоставлений
Параметр Metadata содержит список местоположений, в которых поставщик EntityClient выполняет поиск файлов модели и сопоставления. Файлы модели и сопоставления часто развертываются в том же каталоге, что и исполняемый файл приложения. Эти файлы могут быть также развернуты в конкретном местоположении или включены в виде внедренного ресурса в приложение.
Внедренные ресурсы задаются следующим образом:
Metadata=res://<assemblyFullName>/<resourceName>
Для определения расположения внедренного ресурса доступны следующие способы.
| Вариант | Описание |
|---|---|
assemblyFullName |
Полное имя сборки с внедренным ресурсом. Это имя включает простое имя, имя версии, поддерживаемую культуру и открытый ключ следующим образом:ResourceLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullРесурсы можно внедрять в любую сборку, доступную для приложения. Если указать подстановочный знак (*) для assemblyFullName, среда выполнения Entity Framework будет искать ресурсы в следующих расположениях в следующем порядке:1. Вызываемая сборка. 2. Ссылочные сборки. 3. Сборки в каталоге bin приложения. Если файлы не найдены ни в одном из этих расположений, вызывается исключение. Примечание. При использовании подстановочного знака (*) Entity Framework необходимо перебрать все сборки, чтобы найти ресурсы с правильным именем. Для повышения производительности указывайте имя сборки вместо подстановочного символа. |
resourceName |
Имя включенного ресурса, например AdventureWorksModel.csdl. Службы метаданных будут искать файлы или ресурсы только с одним из следующих расширений: .csdl, .ssdl или .msl. Если resourceName не указано, загружаются все ресурсы метаданных. Ресурсы должны иметь в сборке уникальные имена. Если в сборке в разных каталогах указано несколько файлов с одинаковыми именами, то в resourceName перед именем ресурса должна быть представлена структура папок, например ИмяПапки.ИмяФайла.csdl.Указание resourceName не требуется, если для assemblyFullName задан символ-шаблон (*). |
Примечание.
Для повышения производительности внедряйте ресурсы в вызывающую сборку, за исключением сценариев, не связанных с веб-приложениями, где в вызывающей сборке отсутствуют ссылки на сопоставления и файлы метаданных.
В следующем примере загружаются все файлы модели и сопоставления из вызывающей сборки, а также связанных сборок и других сборок в каталоге bin приложения.
Metadata=res://*/
В следующем примере загружаются файл model.csdl из сборки AdventureWorks, а также файлы model.ssdl и model.msl из каталога по умолчанию выполняющегося приложения.
Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/model.csdl|model.ssdl|model.msl
В следующем примере загружаются три заданных ресурса из указанной сборки.
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
В следующем примере из сборки загружаются все внедренные ресурсы с расширениями .csdl, .msl и .ssdl.
Metadata=res://AdventureWorks, 1.0.0.0, neutral, a14f3033def15840/
В следующем примере загружаются все ресурсы в относительном пути к файлу и "datadir\metadata\" из загруженной сборки.
Metadata=datadir\metadata\
В следующем примере загружаются все ресурсы из относительного пути к файлу, находящегося в месте расположения загруженной сборки.
Metadata=.\
Поддержка строка подстановки «DataDirectory» и корневого оператора веб-приложения (~)
DataDirectory и оператор ~ используются в ConnectionString качестве Metadata и Provider Connection String ключевых слов. Оператор EntityConnection пересылает параметр DataDirectory и оператор ~ к MetadataWorkspace и поставщику хранилища соответственно.
| Срок | Описание |
|---|---|
|DataDirectory| |
Определяет относительный путь к файлам сопоставления и метаданных. Это значение определяется с помощью метода AppDomain.SetData("DataDirectory", objValue). Строка DataDirectory подстановки должна быть окружена символами канала и не может быть пробела между его именем и символами канала. Имя DataDirectory не чувствительно к регистру.Если физический каталог с именем DataDirectory должен быть передан как член списка путей метаданных, добавьте пробел в обе стороны имени. Например: Metadata="DataDirectory1 | DataDirectory | DataDirectory2". Приложение ASP.NET использует |DataDirectory| для разрешения пути к папке "<корневой каталог> приложения/app_data". |
| ~ | Приводит к корневому каталогу веб-приложения. Символ ~ в ведущей позиции всегда интерпретируется как оператор определения корневого каталога веб-приложения (~), хотя и может представлять допустимый локальный подкаталог. Для ссылки на такой локальный подкаталог пользователь должен явно указать ./~. |
DataDirectory и оператор ~ должны быть указаны только в начале пути, поскольку они не интерпретируются в любой другой позиции. Платформа Entity Framework пытается преобразовать ~/data, но рассматривает /data/~ как физический путь.
Путь, начинающийся с DataDirectory или оператора ~, нельзя преобразовать в физический путь вне ветви DataDirectory и оператора ~. Например, следующие пути будут преобразованы так: ~ , ~/data, ~/bin/Model/SqlServer. Попытка преобразования следующих путей завершится ошибкой: ~/.., ~/../other.
DataDirectory и оператор «~» могут включать подкаталоги: |DataDirectory|\Model, ~/bin/Model.
Разрешение подстановочной строки DataDirectory и оператора ~ является нерекурсивным. Например, если DataDirectory включает символ ~, возникает исключение. Тем самым предотвращается бесконечная рекурсия.