asp.net - 为什么 Entity Framework 在使用 ADO.NET 实体数据模型映射数据库表时会自动使用 ObjectContext 而不是 DbContext

标签 asp.net asp.net-mvc-3 entity-framework dbcontext objectcontext

我首先遵循数据库方法;我已经在我的 SQL Server 2008 数据库中创建了表,然后我使用 ADO.NET 实体数据模型将这些表映射到 Entity Framework 类。但是当我打开 Designer.cs 文件时,我在自动创建的类定义中发现了以下代码:

public partial class PortalEntities : ObjectContext

所以我有以下三个问题让我感到困惑:
  • 为什么我的 PortalEntities类派生自 ObjectContext而不是 DbContext正如我所期待的那样?
  • ObjectContext之间有什么大的区别吗? & DbContext ,或者它们主要相同并提供相同的功能
  • 当我尝试编写类似于以下代码的内容时:
    Student student = db.Students.Find(id);
    

  • 我发现我不能使用 .Find()我以前使用 DbContext 的方法,这是否意味着 ObjectContext & DbContext我可以使用不同的方法吗?

    BR

    最佳答案

    DbContextObjectContext 的包装器这简化了我们最常做的事情的界面。

    如果您有 DbContext您仍然可以访问 ObjectContext((IObjectContextAdapter)dbContext).ObjectContext;
    如果您想使用 DbContext而不是 ObjectContext首先使用数据库时,您可以切换用于生成代码的模板。您可以通过右键单击您的 EDMX 并选择“添加代码生成项”来完成此操作。然后您可以选择 DbContext 模板。

    Here is an example的整个过程。

    关于asp.net - 为什么 Entity Framework 在使用 ADO.NET 实体数据模型映射数据库表时会自动使用 ObjectContext 而不是 DbContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9020809/

    相关文章:

    asp.net - ASP.NET〜/无法解析为“/”

    c# - Ninject + MVC3 没有注入(inject) Controller

    entity-framework - 如何在 EF 中使用/保留 POCO 对象关系?

    entity-framework - VS 2010 和 Entity Framework : accessing SQL Server 2000 databases

    c# - @Html.ValidationMessageFor 没有按预期工作

    asp.net - 在应用程序重新启动时清除临时 ASP.NET 文件

    ASP.NET MVC 内联标记不适用于 <link href>

    javascript - 从 VB 代码后面调用 javascript 代码时遇到问题

    asp.net - Dapper:从存储过程映射动态数据透视列

    asp.net-mvc - 从递归模型创建表单