我首先遵循数据库方法;我已经在我的 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
最佳答案
DbContext
是 ObjectContext
的包装器这简化了我们最常做的事情的界面。
如果您有 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/