Database 類別

[此頁面專屬於 Entity Framework 第 6 版。最新版本可從 'Entity Framework' NuGet 套件取得。如需 Entity Framework 的詳細資訊,請參閱 msdn.com/data/ef。]

此類別的執行個體是從 DbContext 物件取得,可用來管理支援 DbContext 或連接的實際資料庫。 其中包括建立和刪除資料庫及檢查資料庫是否存在。 請注意,只要使用此類別的靜態方法,透過連接 (亦即 不需要完整內容) 就可以執行資料庫的刪除及檢查其是否存在。

繼承階層

System.Object
  System.Data.Entity.Database

命名空間:  System.Data.Entity
組件:  EntityFramework (在 EntityFramework.dll 中)

語法

'宣告
<SuppressMessageAttribute("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification := "The DbContextTransaction and EntityTransaction should never be disposed by this class")> _
Public Class Database
'用途
Dim instance As Database
[SuppressMessageAttribute("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification = "The DbContextTransaction and EntityTransaction should never be disposed by this class")]
public class Database
[SuppressMessageAttribute(L"Microsoft.Design", L"CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification = L"The DbContextTransaction and EntityTransaction should never be disposed by this class")]
public ref class Database
[<SuppressMessageAttribute("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification = "The DbContextTransaction and EntityTransaction should never be disposed by this class")>]
type Database =  class end
public class Database

Database 類型會公開下列成員。

屬性

  名稱 描述
公用屬性 CommandTimeout 取得或設定所有內容作業的逾時值 (以秒為單位)。預設值為 null,而 null 表示將會使用基礎提供者的預設值。
公用屬性 Connection 傳回此內容正在使用的連接。如果連接尚不存在,這可能會導致建立連接。
公用屬性 CurrentTransaction 取得基礎存放區連接登記所在的交易。可能是空白值。
公用屬性靜態成員 DefaultConnectionFactory 已過時。 單僅從資料庫名稱或連接字串建立 DbConnection 時所要使用的連接工廠。
公用屬性 Log 設定此屬性,將 DbContext 產生的 SQL 記錄至指定的委派。例如,要記錄至主控台,請將此屬性設為 Write(String)

靠上

方法

  名稱 描述
公用方法 BeginTransaction() 在基礎存放區連接上開始交易
公用方法 BeginTransaction(IsolationLevel) 在基礎存放區連接上使用指定的隔離等級開始交易
公用方法 CompatibleWithModel 檢查資料庫是否與目前的 Code First 模型相容。
公用方法 Create 在資料庫伺服器上針對支援內容中所定義的模型建立新的資料庫。請注意,在執行資料庫初始化策略之前呼叫此方法將會停用該策略的執行。
公用方法 CreateIfNotExists 在資料庫伺服器上針對支援內容中所定義的模型建立新的資料庫,但前提是伺服器上尚未有同名的資料庫存在。
公用方法 Delete() 如果資料庫伺服器上有資料庫則將它刪除,否則不執行任何動作。從初始設定式外部呼叫此方法會將資料庫標示為尚未初始化。這表示一旦資料庫已刪除後,若又試圖再次使用該資料庫,則將再次執行任何初始設定式的設定,而且通常會自動嘗試再次建立資料庫。
公用方法靜態成員 Delete(DbConnection) 如果資料庫伺服器上有資料庫則將它刪除,否則不執行任何動作。
公用方法靜態成員 Delete(String) 如果資料庫伺服器上有資料庫則將它刪除,否則不執行任何動作。與資料庫的連接是使用給定的資料庫名稱或連接字串所建立,如同 DbContext 類別的文件中所述。
公用方法 Equals 判斷指定的資料庫是否等於目前的資料庫。 (覆寫 Object.Equals(Object)。)
公用方法 ExecuteSqlCommand(String, Object[]) 針對資料庫執行給定的 DDL/DML 命令。如同所有接受 SQL 的應用程式開發介面,任何使用者輸入都務必進行參數化以防範 SQL 插入式攻擊。您可在 SQL 查詢字串中加入參數預留位置,然後再以其他引數提供參數值。您所提供的任何參數值都將自動轉換為 DbParameter。context.Database.ExecuteSqlCommand("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor)。或者,您也可以建構 DbParameter 再將其提供給 SqlQuery。如此您便能在 SQL 查詢字串中使用具名參數。context.Database.ExecuteSqlCommand("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor));
公用方法 ExecuteSqlCommand(TransactionalBehavior, String, Object[]) 針對資料庫執行給定的 DDL/DML 命令。如同所有接受 SQL 的應用程式開發介面,任何使用者輸入都務必進行參數化以防範 SQL 插入式攻擊。您可在 SQL 查詢字串中加入參數預留位置,然後再以其他引數提供參數值。您所提供的任何參數值都將自動轉換為 DbParameter。context.Database.ExecuteSqlCommand("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor)。或者,您也可以建構 DbParameter 再將其提供給 SqlQuery。如此您便能在 SQL 查詢字串中使用具名參數。context.Database.ExecuteSqlCommand("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor));
公用方法 ExecuteSqlCommandAsync(String, Object[]) 針對資料庫以非同步方式執行給定的 DDL/DML 命令。如同所有接受 SQL 的應用程式開發介面,任何使用者輸入都務必進行參數化以防範 SQL 插入式攻擊。您可在 SQL 查詢字串中加入參數預留位置,然後再以其他引數提供參數值。您所提供的任何參數值都將自動轉換為 DbParameter。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor)。或者,您也可以建構 DbParameter 再將其提供給 SqlQuery。如此您便能在 SQL 查詢字串中使用具名參數。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor));
公用方法 ExecuteSqlCommandAsync(String, CancellationToken, Object[]) 針對資料庫以非同步方式執行給定的 DDL/DML 命令。如同所有接受 SQL 的應用程式開發介面,任何使用者輸入都務必進行參數化以防範 SQL 插入式攻擊。您可在 SQL 查詢字串中加入參數預留位置,然後再以其他引數提供參數值。您所提供的任何參數值都將自動轉換為 DbParameter。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor)。或者,您也可以建構 DbParameter 再將其提供給 SqlQuery。如此您便能在 SQL 查詢字串中使用具名參數。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor));
公用方法 ExecuteSqlCommandAsync(TransactionalBehavior, String, Object[]) 針對資料庫以非同步方式執行給定的 DDL/DML 命令。如同所有接受 SQL 的應用程式開發介面,任何使用者輸入都務必進行參數化以防範 SQL 插入式攻擊。您可在 SQL 查詢字串中加入參數預留位置,然後再以其他引數提供參數值。您所提供的任何參數值都將自動轉換為 DbParameter。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor)。或者,您也可以建構 DbParameter 再將其提供給 SqlQuery。如此您便能在 SQL 查詢字串中使用具名參數。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor));
公用方法 ExecuteSqlCommandAsync(TransactionalBehavior, String, CancellationToken, Object[]) 針對資料庫以非同步方式執行給定的 DDL/DML 命令。如同所有接受 SQL 的應用程式開發介面,任何使用者輸入都務必進行參數化以防範 SQL 插入式攻擊。您可在 SQL 查詢字串中加入參數預留位置,然後再以其他引數提供參數值。您所提供的任何參數值都將自動轉換為 DbParameter。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @p0", userSuppliedAuthor)。或者,您也可以建構 DbParameter 再將其提供給 SqlQuery。如此您便能在 SQL 查詢字串中使用具名參數。context.Database.ExecuteSqlCommandAsync("UPDATE dbo.Posts SET Rating = 5 WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor));
公用方法 Exists() 檢查資料庫是否存在伺服器上。
公用方法靜態成員 Exists(DbConnection) 檢查資料庫是否存在伺服器上。
公用方法靜態成員 Exists(String) 檢查資料庫是否存在伺服器上。與資料庫的連接是使用給定的資料庫名稱或連接字串所建立,如同 DbContext 類別的文件中所述。
受保護的方法 Finalize (繼承自 Object)。
公用方法 GetHashCode 傳回此資料庫的雜湊函數。 (覆寫 Object.GetHashCode()。)
公用方法 GetType 取得目前執行個體的 Type
公用方法 Initialize 在此內容上執行登錄的 IDatabaseInitializer<TContext>。如果 "force" 設定為 true,則會執行初始設定式,不論其之前是否已執行。如果在應用程式執行時刪除資料庫而且需要重新初始化,這樣的處理方式會很實用。如果 "force" 設定為 false,則只有當此內容、模型及此應用程式定義域中的連接尚未執行初始設定式時,才會予以執行。需要確定資料庫已經建立並植入之後再開始某項作業時 (例如,當作業為交易的一部分而應暫緩以免造成問題),通常會使用此方法。
受保護的方法 MemberwiseClone (繼承自 Object)。
公用方法靜態成員 SetInitializer<TContext> 設定要用於給定內容類型的資料庫初始設定式。初次使用給定的 DbContext 類型存取資料庫時,便會呼叫資料庫初始設定式。Code First 內容的預設策略是 CreateDatabaseIfNotExists<TContext> 的執行個體。
公用方法 SqlQuery(Type, String, Object[]) 建立原始 SQL 查詢,此查詢將會傳回給定類型的項目。此類型可以是擁有屬性的任何類型 (這些屬性符合從查詢傳回的資料行名稱) 或者可以是簡單基本類型。此類型不必是實體類型。此內容絕對不會追蹤此查詢的結果,即使傳回之物件的類型為實體類型亦然。使用 SqlQuery(String, Object[]) 方法可傳回此內容所追蹤的實體。如同所有接受 SQL 的應用程式開發介面,任何使用者輸入都務必進行參數化以防範 SQL 插入式攻擊。您可在 SQL 查詢字串中加入參數預留位置,然後再以其他引數提供參數值。您所提供的任何參數值都將自動轉換為 DbParameter。context.Database.SqlQuery(typeof(Post), "SELECT * FROM dbo.Posts WHERE Author = @p0", userSuppliedAuthor)。或者,您也可以建構 DbParameter 再將其提供給 SqlQuery。如此您便能在 SQL 查詢字串中使用具名參數。context.Database.SqlQuery(typeof(Post), "SELECT * FROM dbo.Posts WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor));
公用方法 SqlQuery<TElement>(String, Object[]) 建立原始 SQL 查詢,此查詢將會傳回給定泛型類型的項目。此類型可以是擁有屬性的任何類型 (這些屬性符合從查詢傳回的資料行名稱) 或者可以是簡單基本類型。此類型不必是實體類型。此內容絕對不會追蹤此查詢的結果,即使傳回之物件的類型為實體類型亦然。使用 SqlQuery(String, Object[]) 方法可傳回此內容所追蹤的實體。如同所有接受 SQL 的應用程式開發介面,任何使用者輸入都務必進行參數化以防範 SQL 插入式攻擊。您可在 SQL 查詢字串中加入參數預留位置,然後再以其他引數提供參數值。您所提供的任何參數值都將自動轉換為 DbParameter。context.Database.SqlQuery&lt;Post&gt;("SELECT * FROM dbo.Posts WHERE Author = @p0", userSuppliedAuthor);。或者,您也可以建構 DbParameter,再將其提供給 SqlQuery。如此您便能在 SQL 查詢字串中使用具名參數。context.Database.SqlQuery&lt;Post&gt;("SELECT * FROM dbo.Posts WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor));
公用方法 ToString 傳回資料庫的字串表示法。 (覆寫 Object.ToString()。)
公用方法 UseTransaction 讓使用者能夠傳入由 Database 物件外建立的資料庫交易,以促使 Entity Framework 從該外部交易內執行命令。或者,傳入 null 可清除本架構對該項交易的認知。

靠上

執行緒安全

這個類型的任何 Public static (在 Visual Basic 中為 Shared) 成員都是安全執行緒。並非所有的執行個體成員都是安全執行緒。

請參閱

參考

System.Data.Entity 命名空間