EntityConnection.ConnectionString 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置 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
属性值
建立与数据源的初始连接所需的连接字符串。 默认值为一个空字符串。 连接关闭时,将返回当前设置的值。 如果未设置任何值,则将返回一个空字符串。
例外
尝试在初始化 EntityConnection 的 MetadataWorkspace 后设置 ConnectionString 属性。 在通过重载(此重载将 MetadataWorkspace 作为参数)构造 EntityConnection 实例,或者打开 MetadataWorkspace 实例时,初始化 EntityConnection。
提供的连接字符串关键字无效,或未提供所需的连接字符串关键字。
示例
下面的示例演示如何配合使用 EntityConnectionStringBuilder 和 SqlConnectionStringBuilder。 代码设置 的属性,SqlConnectionStringBuilder
以创建一个SqlConnection字符串,该字符串提供基础提供程序的一部分连接字符串。 请注意, Provider
不能使用 SqlConnectionStringBuilder
设置名称,因为它不使用有效的 SqlConnection
语法。 代码通过设置EntityConnectionStringBuilder
属性创建EntityConnection字符串。
// 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
连接字符串由一系列用分号分隔的关键字 (keyword) /值参数对组成。 每个关键字和它的值之间用等号 (=) 连接。 下表列出了 ConnectionString 中的关键字值的有效名称。
关键字 | 说明 |
---|---|
Provider |
此关键字在未指定 Name 关键字时是必需的。 提供程序名称,用于检索基础提供程序的 DbProviderFactory 对象。 该值为常量。Name 如果关键字 (keyword) 未包含在连接字符串中,则关键字 (keyword) 需要非空值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提供关键字 (keyword) /值,也可以指定Name
关键字 (keyword) 的值。
Name
如果指定了关键字 (keyword) ,则从应用程序配置文件中检索连接字符串 关键字 (keyword) /值,如下所示:
Name=AdventureWorksEntities;
Name
如果在 属性中使用ConnectionString关键字 (keyword) ,则不允许使用其他关键字。 关键字 (keyword) Name
是指存储在应用程序配置文件的 connectionStrings
节中的命名连接字符串,如以下示例所示。
Provider
、 Metadata
和 Provider Connection String
值在运行时从配置文件中检索。
应用程序也可以直接在 ConnectionString 属性中提供关键字/值对,如下面的示例所示。 在这种情况下,Name
不使用关键字 (keyword) 。
"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 验证概念性模型、存储模型和映射文件是否全部存在。