我有一个简单的UnitOfWork
模式与实体框架4一样,如下:
public class UnitOfWork
{
private readonly myEntities _context;
public UnitOfWork()
{
_context = new myEntities();
}
public myEntities Context { get { return _context; } }
public void SaveChanges()
{
_context.SaveChanges();
}
public void Finish()
{
_context.Dispose();
}
}
我的问题是:我需要Finish
方法吗?我是否需要在Dispose
派生的实体对象上显式调用ObjectContext
,还是应该让垃圾收集器处理它?</ p>
答案 0 :(得分:4)
由于EF上下文是一次性的,并且其核心代表数据库连接是,您应该Dispose()
它。
为了让UnitOfWork
课程的消费者更轻松一点,我会让它实现IDisposable
并反对提供Finish()
方法。这样就可以在using
块中使用。