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<Post>("SELECT * FROM dbo.Posts WHERE Author = @p0", userSuppliedAuthor);。或者,您也可以建構 DbParameter,再將其提供給 SqlQuery。如此您便能在 SQL 查詢字串中使用具名參數。context.Database.SqlQuery<Post>("SELECT * FROM dbo.Posts WHERE Author = @author", new SqlParameter("@author", userSuppliedAuthor)); | |
ToString | 傳回資料庫的字串表示法。 (覆寫 Object.ToString()。) | |
UseTransaction | 讓使用者能夠傳入由 Database 物件外建立的資料庫交易,以促使 Entity Framework 從該外部交易內執行命令。或者,傳入 null 可清除本架構對該項交易的認知。 |
靠上
執行緒安全
這個類型的任何 Public static (在 Visual Basic 中為 Shared) 成員都是安全執行緒。並非所有的執行個體成員都是安全執行緒。