EntityConnection.ConnectionString Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает строку соединения EntityConnection.
public:
virtual property System::String ^ ConnectionString { System::String ^ get(); void set(System::String ^ value); };
public override string ConnectionString { get; set; }
member this.ConnectionString : string with get, set
Public Overrides Property ConnectionString As String
Значение свойства
Строка подключения, необходимая для установления начального подключения к источнику данных. Значение по умолчанию - пустая строка. Для закрытого соединения возвращается текущее установленное значение. Если значение не было задано, возвращается пустая строка.
Исключения
Предпринята попытка установить свойство ConnectionString после инициализации EntityConnection из MetadataWorkspace. MetadataWorkspace инициализируется при создании экземпляра EntityConnection через перегрузку, принимающую как параметр MetadataWorkspace или при открытии экземпляра EntityConnection.
В строке подключения предоставлено недопустимое ключевое слово или не предоставлено обязательное.
Примеры
В следующем примере показано использование класса EntityConnectionStringBuilder в сочетании с классом SqlConnectionStringBuilder. Код задает свойства объекта SqlConnectionStringBuilder
для создания SqlConnection строки, которая предоставляет часть базового поставщика строка подключения. Обратите внимание, что Provider
имя нельзя задать с помощью SqlConnectionStringBuilder
, так как в нем не используется допустимый SqlConnection
синтаксис. Код создает строку, EntityConnection задавая EntityConnectionStringBuilder
свойства.
// Specify the provider name, server and database.
string providerName = "System.Data.SqlClient";
string serverName = ".";
string databaseName = "AdventureWorks";
// Initialize the connection string builder for the
// underlying provider.
SqlConnectionStringBuilder sqlBuilder =
new SqlConnectionStringBuilder();
// Set the properties for the data source.
sqlBuilder.DataSource = serverName;
sqlBuilder.InitialCatalog = databaseName;
sqlBuilder.IntegratedSecurity = true;
// Build the SqlConnection connection string.
string providerString = sqlBuilder.ToString();
// Initialize the EntityConnectionStringBuilder.
EntityConnectionStringBuilder entityBuilder =
new EntityConnectionStringBuilder();
//Set the provider name.
entityBuilder.Provider = providerName;
// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = providerString;
// Set the Metadata location.
entityBuilder.Metadata = @"res://*/AdventureWorksModel.csdl|
res://*/AdventureWorksModel.ssdl|
res://*/AdventureWorksModel.msl";
Console.WriteLine(entityBuilder.ToString());
using (EntityConnection conn =
new EntityConnection(entityBuilder.ToString()))
{
conn.Open();
Console.WriteLine("Just testing the connection.");
conn.Close();
}
' Specify the provider name, server and database.
Dim providerName As String = "System.Data.SqlClient"
Dim serverName As String = "."
Dim databaseName As String = "AdventureWorks"
' Initialize the connection string builder for the
' underlying provider.
Dim sqlBuilder As New SqlConnectionStringBuilder
' Set the properties for the data source.
sqlBuilder.DataSource = serverName
sqlBuilder.InitialCatalog = databaseName
sqlBuilder.IntegratedSecurity = True
' Build the SqlConnection connection string.
Dim providerString As String = sqlBuilder.ToString
' Initialize the EntityConnectionStringBuilder.
Dim entityBuilder As New EntityConnectionStringBuilder
'Set the provider name.
entityBuilder.Provider = providerName
' Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = providerString
' Set the Metadata location to the current directory.
entityBuilder.Metadata = "res://*/AdventureWorksModel.csdl|" & _
"res://*/AdventureWorksModel.ssdl|" & _
"res://*/AdventureWorksModel.msl"
Console.WriteLine(entityBuilder.ToString)
Using conn As EntityConnection = New EntityConnection(entityBuilder.ToString)
conn.Open()
Console.WriteLine("Just testing the connection.")
conn.Close()
End Using
Комментарии
Строка подключения EntityClient
состоит из последовательности пар ключевое слово/значение, разделенных точкой с запятой. Знак равенства (=) соединяет каждый ключевое слово и его значение. В следующей таблице перечислены допустимые имена для значений ключевых слов в строке соединения ConnectionString.
Ключевое слово | Описание |
---|---|
Provider |
Необходимо, если не задано ключевое слово Name . Имя поставщика, которое используется для получения объекта DbProviderFactory, относящегося к базовому поставщику. Это - постоянное значение.Name Если ключевое слово не включен в строка подключения, требуется непустое значение для Provider ключевое слово. Это ключевое слово является взаимоисключающим по отношению к ключевому слову Name . |
Provider Connection String |
Необязательный элемент. Указывает зависящую от поставщика строку соединения, которая передается в базовый источник данных. Эта строка соединения должна быть выражена с помощью пар «ключевое слово/значение», допустимых для этого поставщика данных. Применение недопустимого ключевого слова Provider Connection String приводит к возникновению ошибки времени выполнения при его проверке в источнике данных.Это ключевое слово является взаимоисключающим по отношению к ключевому слову Name .Значение Provider Connection String должно быть заключено в кавычки. Ниже представлен пример такого кода:Provider Connection String ="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.Это ключевое слово является взаимоисключающим по отношению к другим ключевым словам строки соединения. |
Приложение может предоставлять непосредственно в ключевое слово/значение ConnectionString свойства, либо можно задать значение для Name
ключевое слово. Если Name
указывается ключевое слово, ключевое слово/значения строки подключения извлекаются из файла конфигурации приложения, следующим образом:
Name=AdventureWorksEntities;
Если Name
используется ключевое слово в ConnectionString свойство, другие ключевые слова не допускаются. Ключевое слово Name
ссылается на именованный строка подключения, который хранится в connectionStrings
разделе в файле конфигурации приложения, как показано в следующем примере. Значения Provider
, Metadata
и Provider Connection String
извлекаются из файла конфигурации во время выполнения.
Пары «ключевое слово/значение» могут быть также заданы непосредственно в свойстве ConnectionString, как показано в следующем примере. В этом случае Name
ключевое слово не используется.
"Provider=System.Data.SqlClient;
Metadata=c:\metadata|c:\Metadata\Sql;
Provider Connection String= 'Data Source=localhost;
Initial Catalog=AdventureWorks;Integrated Security=True;Connection Timeout=60' "
Чтобы избежать случайной синхронизации таких объектов, как System.Data.Common.CommandTrees и ObjectContext с их метаданными, EntityConnection необходимо заблокировать их метаданные. После блокировки метаданных изменения строка подключения не допускаются. Ниже приведены два сценария, в которых метаданные блокируются.
Экземпляр EntityConnection создается с помощью конструктора без параметров или конструктораEntityConnection(String), который принимает строка подключения. В любом случае строка подключения может быть изменена несколько раз перед открытием подключения. Вызывает Open или GetMetadataWorkspace блокирует метаданные.
Экземпляр EntityConnection создается с помощью конструктора EntityConnection(MetadataWorkspace, DbConnection) , который принимает MetadataWorkspace и DbConnection. В этом случае метаданные блокируются во время создания. Изменения строка подключения никогда не допускаются.
При загрузке метаданных объект проверяет наличие EntityConnection концептуальной модели, модели хранения и файла сопоставления.