ObjectContext
ObjectContext
is responsible for:
ObjectContext
also encapsulates these:
ObjectStateManager
to track changes to the objects.ObjectContext
supports Compiled Queries and self-tracking of Entities.public class MyObjectContext : ObjectContext
{
// It uses "ObjectSet" instead of "DbSet":
public ObjectSet<Clan> Clans { get; set; }
public ObjectSet<NinjaEquipment> NinjaEquipments { get; set; }
public ObjectSet<Ninja> Ninjas { get; set; }
public MyObjectContext() : base("name=MyObjectContext")
{
Clans = CreateObjectSet<Clan>();
NinjaEquipments = CreateObjectSet<NinjaEquipment>();
Ninjas = CreateObjectSet<Ninja>();
}
// It doesn't use "OnModelCreating".
}
DbContext
DbContext
is the primary class that is responsible for interacting with data as object.
DBContext
represents a combination of the Unit-Of-Work and Repository patterns. It does following activities:
DbContext
is conceptually similar to ObjectContext
.
ObjectContext
.DBContext
API is easier to use than ObjectContext
API for all common tasks.
ObjectContext
from DBContext
in order to use some of the features of ObjectContext
.IObjectContextAdapter
:using (var db = new MyDbContext())
{
var objectContext = (context as IObjectContextAdapter).ObjectContext;
ObjectQuery<Ninja> ninjas = objectContext.CreateQuery<Ninja>(
@"SELECT VALUE n FROM NinjaContext.Ninjas AS n WHERE n.DateOfBirth > @dob",
new ObjectParameter[] { new ObjectParameter("dob", new DateTime(1984, 1, 1)) });
}
DbContext
is not thread-safe.
DbContext
maintains to offer its Identity Map, change tracking and Unit of Work functionalities.DbContext
-derived instance from multiple threads simultaneously.DbContext
in each thread.DBSet
DBSet
class represents an entity set that is used for the create, read, update, and delete operations.DBSet
(DbSet<TEntity>
) can be used when the type of entity is not known at build time.DBEntityEntry
Entry
method of DBContext
:**`DBEntityEntry studentEntry = dbcontext.Entry(StudentEntity);`**
DbContext
Lifetime