I am following the database approach first; I have created the tables in my SQL Server 2008 database, then I map those tables to Entity Framework classes using an ADO.NET Entity Data Model. But when I opened the designer.cs file I found the following code in the class definition which was created automatically:
public partial class PortalEntities : ObjectContext
so I have the following three question that get my confused:
Why does my
PortalEntitiesclass derive fromObjectContextand notDbContextas I was expecting?Is there a major difference between
ObjectContext&DbContext, or they are mainly the same and offer that same capabilitiesWhen I try to write the something similar to the following code:
Student student = db.Students.Find(id);
I found that I cannot use .Find() method as I used to do using DbContext, so does this mean that ObjectContext & DbContext have different methods that I can use?
BR
The
DbContextis a wrapper around theObjectContextwhich simplifies the interface for the things we do most.If you have an
DbContextyou can still access theObjectContexttrough((IObjectContextAdapter)dbContext).ObjectContext;If you want to use the
DbContextinstead of theObjectContextwhen using database first, you can switch the template that's used for generating your code. You can do this by right-clicking in your EDMX and selecting 'Add Code Generation Item'. You can then select the DbContext template.Here is an example of the whole process.