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

属性值

建立与数据源的初始连接所需的连接字符串。 默认值为一个空字符串。 连接关闭时,将返回当前设置的值。 如果未设置任何值,则将返回一个空字符串。

例外

尝试在初始化 EntityConnectionMetadataWorkspace 后设置 ConnectionString 属性。 在通过重载(此重载将 MetadataWorkspace 作为参数)构造 EntityConnection 实例,或者打开 MetadataWorkspace 实例时,初始化 EntityConnection

提供的连接字符串关键字无效,或未提供所需的连接字符串关键字。

示例

下面的示例演示如何配合使用 EntityConnectionStringBuilderSqlConnectionStringBuilder。 代码设置 的属性,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 节中的命名连接字符串,如以下示例所示。 ProviderMetadataProvider 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.CommandTreesObjectContext)与其元数据失去同步,EntityConnection 必须锁定对象的元数据。 锁定元数据后,不允许对连接字符串做出任何更改。 下面是锁定元数据的两种方案:

加载元数据后,EntityConnection 验证概念性模型、存储模型和映射文件是否全部存在。

适用于

另请参阅