One of the new features in the EF Feature CTP5 that was released yesterday was a new T4 template for generating DbContext
instead of ObjectContext
In this post I’m going to explain what is the new DbContext
and then show how to use the new T4 template. Pay attention that the details I provide might change in the future since its only a CTP and not a release.
What is DbContext?
The DbContext
is a new lightweight context that was created and provided within the EF Feature package. The DbContext
is a wrapper for the ObjectContext
(it doesn’t inherit from it). Since not in all development scenarios we need the full feature list of the ObjectContext
the DbContext
can help us by exposing only the common functionality that we need. It includes some additional features for our disposal such as OnModelCreating
extension point.
Using DbContext T4 Template
In order to use the new T4 template for DbContext
you start with your model. The model can be created with the Database First approach or with the Model First approach. The model I’m going to use is the following:
When you want to use the T4 template, from the designer surface you will press the right mouse button and press the Add Code Generation Item menu item.
From the Add New Item window choose the new ADO.NET DbContext Generator and give the model an appropriate name:
After pressing the Add button two new files will be created and a reference to the new EntityFramework.dll will be added:
The first file (SchoolModel.Context.tt) will contain the DbContext
and the second file (SchoolModel.tt) will contain the entities. Now you can start coding against the DbContext
In the following example I query the database using the DbContext to find the department with id of 1:
class Program
{
static void Main(string[] args)
{
using (SchoolEntities context = new SchoolEntities())
{
var query = context.Departments.Find(1);
Console.WriteLine("{0} has a DepartmentID of 1", query.Name);
}
}
}
The result of the query:
Summary
You can expect that the EF ecosystem will continue to grow. The new feature CTP adds more functionality for our disposal. One of these features is the new DbContext
and also its new T4 template.