Asp.net

為什麼Entity Framework在使用ADO.NET實體數據模型映射數據庫表時會自動使用ObjectContext而不是DbContext

  • April 21, 2015

我首先遵循數據庫方法;我已經在我的 SQL Server 2008 數據庫中創建了這些表,然後我使用 ADO.NET 實體數據模型將這些表映射到實體框架類。但是當我打開 Designer.cs 文件時,我在自動創建的類定義中發現了以下程式碼:

public partial class PortalEntities : ObjectContext

所以我有以下三個問題讓我感到困惑:

  1. 為什麼我的PortalEntities課程源自ObjectContext而不是DbContext我所期望的?
  2. ObjectContext&之間是否有主要區別DbContext,或者它們基本相同並提供相同的功能
  3. 當我嘗試編寫類似於以下程式碼的內容時:
Student student = db.Students.Find(id);

我發現我不能像以前那樣使用.Find()方法 using DbContext,這是否意味著ObjectContext&DbContext有不同的方法可以使用?

BR

DbContext是一個包裝器,ObjectContext它簡化了我們最常做的事情的界面。

如果你有一個DbContext你仍然可以訪問ObjectContext低谷 ((IObjectContextAdapter)dbContext).ObjectContext;

如果您想在首先使用數據庫時使用DbContext而不是ObjectContext使用,您可以切換用於生成程式碼的模板。您可以通過右鍵點擊 EDMX 並選擇“添加程式碼生成項”來執行此操作。然後,您可以選擇 DbContext 模板。

這是整個過程的一個例子。

引用自:https://stackoverflow.com/questions/9020809