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
連接字串 是由以分號分隔的關鍵詞/值參數位序列所組成。 等號 (=) 會連接每個關鍵字和其值。 下表列出 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 會驗證概念模型、儲存模型及對應檔是否都存在。