語言

DbContext 類別

定義

DbContext 實例代表工作單元與儲存庫模式的組合,可用於從資料庫查詢並將變更群組,然後將這些變更寫回儲存單元。 DbContext 在概念上與 ObjectContext 相似。

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification="Casing is intentional")]
public class DbContext : IDisposable, System.Data.Entity.Infrastructure.IObjectContextAdapter
public class DbContext : IDisposable, System.Data.Entity.Infrastructure.IObjectContextAdapter
type DbContext = class
    interface IDisposable
    interface IObjectContextAdapter
Public Class DbContext
Implements IDisposable, IObjectContextAdapter
繼承
DbContext
衍生
屬性
實作

備註

DbContext 通常搭配包含 DbSet<TEntity> 模型根實體屬性的衍生型別一起使用。 這些集合在導出類別實例建立時會自動初始化。 此行為可透過將屬性套用至整個衍生上下文類別,或套用 SuppressDbSetInitializationAttribute 於類別上的個別屬性來修改。 支撐上下文的實體資料模型可以用多種方式來指定。 使用Code First方法時, DbSet<TEntity> 會依慣例利用衍生上下文的屬性來建立模型。 受保護的 OnModelCreating 方法可以被覆寫以調整此模型。 對於用於 Model First 方法的模型,可以透過從 明確建立 並DbCompiledModelDbModelBuilder傳遞給其中一個 DbContext 建構子來獲得更多控制。 在使用資料庫優先或模型優先方法時,實體資料模型可透過實體設計器建立(或手動建立 EDMX 檔案),然後可透過實體 連接字串 或物件EntityConnection來指定此模型。 與資料庫的連線(包括資料庫名稱)可以透過多種方式指定。 若無參數的 DbContext 建構子是從衍生上下文呼叫,則會利用該衍生上下文的名稱來尋找 app.config 或 web.config 檔案中的連接字串。 若找不到 連接字串,則該名稱會傳給類別註冊Database的 DefaultConnectionFactory。 連線工廠會將上下文名稱作為預設 連接字串 的資料庫名稱。 (此預設 連接字串 指向本地機器上的 .\SQLEXPRESS,除非註冊了不同的 DefaultConnectionFactory。)連接/資料庫名稱不使用衍生上下文名稱,也可以透過將名稱傳給取字串的 DbContext 建構子來明確指定。 名稱也可以以「name=myname」的形式傳遞,此時必須在設定檔中找到該名稱,否則會拋出例外。 請注意,app.config 或 web.config 檔案中的連線可以是一般的資料庫連接字串(而非特殊的實體框架連接字串),此時資料庫上下文將使用 Code First。 然而,如果設定檔中找到的連線是特殊的 Entity Framework 連接字串,則 DbContext 會先使用資料庫/模型,並使用該 連接字串 中指定的模型。 也可以用現有或明確建立的 DbConnection 來取代資料庫/連線名稱。 DbModelBuilderVersionAttribute A 可以套用到 DbContext 衍生的類別,以設定該上下文在建立模型時所使用的慣例版本。 若未套用屬性,則使用最新版本的慣例。

建構函式

名稱 Description
DbContext()

利用慣例建立一個新的上下文實例,建立將要連接的資料庫名稱。 慣例名稱是衍生上下文類別的全名(命名空間 + 類別名稱)。 請參閱課堂備註,了解如何利用這些方式建立連結。

DbContext(DbCompiledModel)

利用慣例建立一個新的上下文實例,建立將要連接的資料庫名稱,並從給定模型初始化資料庫。 慣例名稱是衍生上下文類別的全名(命名空間 + 類別名稱)。 請參閱課堂備註,了解如何利用這些方式建立連結。

DbContext(DbConnection, Boolean)

利用現有連線建構一個新的上下文實例,連接資料庫。 當上下文被處置時,若 contextOwnsConnection 是 false。

DbContext(DbConnection, DbCompiledModel, Boolean)

利用現有連線建立一個新的上下文實例以連接資料庫,並從給定模型初始化。 當上下文被處置時,若 contextOwnsConnection 是 false。

DbContext(ObjectContext, Boolean)

會圍繞現有的 ObjectContext 建構一個新的上下文實例。

DbContext(ObjectContext, Boolean)

會圍繞現有的 ObjectContext 建構一個新的上下文實例。

<param name=“objectContext”> 一個既有的 ObjectContext,用以包裝新上下文。</param><param name=“dbContextOwnsObjectContext”> 如果設定為 true ObjectContext,當 DbContext 被處置時被處置,否則呼叫者必須處置該連線。</param>
DbContext(String, DbCompiledModel)

以所給字串作為資料庫的名稱或 連接字串 建構一個新的上下文實例,並從該模型初始化該實例。 請參閱課堂備註,了解如何利用這些方式建立連結。

DbContext(String)

以該字串作為資料庫名稱或 連接字串,構建一個新的上下文實例,並建立連結。 請參閱課堂備註,了解如何利用這些方式建立連結。

屬性

名稱 Description
ChangeTracker

提供與實體變更追蹤相關的上下文功能存取。

Configuration

提供上下文設定選項的存取。

Database

為此情境建立一個資料庫實例,允許對底層資料庫進行建立、刪除或存在檢查。

方法

名稱 Description
Dispose()

稱為受保護的處置方法。

Dispose(Boolean)

處理上下文。 標的 ObjectContext 資產若是在此上下文中創建,或所有權在此上下文創建時轉移至此上下文,也會被處置。 若資料庫(DbConnection 物件)是在此上下文創建,或所有權在此上下文建立時轉移至該上下文,該連結也會被處置。

Entry(Object)

取得 DbEntityEntry 該實體的物件,提供關於該實體的資訊及對該實體執行動作的能力。

Entry<TEntity>(TEntity)

取得 DbEntityEntry<TEntity> 該實體的物件,提供關於該實體的資訊及對該實體執行動作的能力。

Equals(Object)

DbContext 實例代表工作單元與儲存庫模式的組合,可用於從資料庫查詢並將變更群組,然後將這些變更寫回儲存單元。 DbContext 在概念上與 ObjectContext 相似。

GetHashCode()

DbContext 實例代表工作單元與儲存庫模式的組合,可用於從資料庫查詢並將變更群組,然後將這些變更寫回儲存單元。 DbContext 在概念上與 ObjectContext 相似。

GetType()

DbContext 實例代表工作單元與儲存庫模式的組合,可用於從資料庫查詢並將變更群組,然後將這些變更寫回儲存單元。 DbContext 在概念上與 ObjectContext 相似。

GetValidationErrors()

驗證已追蹤的實體,並回傳包含驗證結果的集合 DbEntityValidationResult 。

OnModelCreating(DbModelBuilder)

當衍生上下文的模型已初始化,但尚未鎖定並用於初始化上下文時,會呼叫此方法。 此方法的預設實作不做任何事,但可在衍生類別中覆寫,使模型在鎖定前可進一步配置。

SaveChanges()

在此情境下所做的所有變更會儲存到底層資料庫。

SaveChangesAsync()

非同步將在此情境下所做的所有變更儲存到底層資料庫。

SaveChangesAsync(CancellationToken)

非同步將在此情境下所做的所有變更儲存到底層資料庫。

Set(Type)

回傳一個非通用 DbSet 實例,用於存取上下文中給定類型的實體及底層儲存。

Set<TEntity>()

回傳 DbSet<TEntity> 一個實例,用於存取上下文中給定類型的實體及底層儲存。

ShouldValidateEntity(DbEntityEntry)

擴充點允許使用者覆寫僅驗證新增及修改實體的預設行為。

ToString()

DbContext 實例代表工作單元與儲存庫模式的組合,可用於從資料庫查詢並將變更群組,然後將這些變更寫回儲存單元。 DbContext 在概念上與 ObjectContext 相似。

ValidateEntity(DbEntityEntry, IDictionary<Object,Object>)

擴充點讓使用者自訂實體的驗證方式或過濾驗證結果。 由 GetValidationErrors() 呼叫。

明確介面實作

名稱 Description
IObjectContextAdapter.ObjectContext

回傳該上下文底層的 Entity Framework ObjectContext。

適用於