ObjectContext類別與DBContext類別

  • 1219
  • 0

ObjectContext類別與DBContext類別

當資料以概念模型中定義的EntityType的實例呈現時,主是是透過ObjectContext類別與資料產生互動。

ObjectContext類別封裝下列三項:

第一、資料庫連線(EntityConnection物件)。

第二、描述資料模型的Meatadata(MetadataWorkspace物件)。

第三、一個物件,用以管理存放在快取中的眾多物件(ObjectStateManager)。

當Entity Data Model的工具產生代表概念模型的物件層(object layer),代表EntityContainer的類別同時也衍生自ObjectContext[1]。

 

就EntityContainer類別而言,代表概念模型中的資料實體的容器,用以存放一組邏輯上屬於同一個群組的資料實體集合與資料實體之間的資料關聯集合[2]。

 

一個DBContext的實例則是代表一組工作單元與repository pattern,可以存放自資料庫查詢的結果,並且將查詢的結果的所有變動視同一個整體的單元一併寫回資料庫。在概念上,DBContext與ObjectContext類似[3]。

 

DBContext將ObjectContext封裝於內部中,所以在操作上較簡便,但是也可以允許程式設計師透過DBContext存取自身內部的ObjectContext[4]。

 

參考資料來源:

[1]ObjectContext Class
http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext(v=vs.110).aspx

[2]EntityContainer Class
http://msdn.microsoft.com/en-us/library/system.data.metadata.edm.entitycontainer(v=vs.110).aspx

[3]DbContext Class
http://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext(v=vs.113).aspx

[4]DBContext
http://www.entityframeworktutorial.net/EntityFramework4.3/dbcontext-vs-objectcontext.aspx