我在使用 EF5 的上下文中遇到了一些问题。我仍在研究这个问题,但我认为用单例模式实现我的 DataContext 类是一个好主意,以便让不同的实体存储库使用相同的对象。是自杀还是有意义?另一个想法是在这里实现一个 ContextManager:http: //www.codeproject.com/Articles/70061/Architecture-Guide-ASP-NET-MVC-Framework-N-tier-En(但我仍在检查他的代码和我还没有真正深入了解它)。
你怎么看?
- 编辑 -
在 Web 应用程序中,我正在为我必须管理的每个实体实现一个存储库
public DataContext : DbContext
{
//...
}
解决方案 1:很好,但是如果我需要在一次调用中执行多个操作,即插入和删除,我想我将对 db 进行两次调用。
public Entity1Repository
{
public void Add(Entity1 entity)
{
using(DataContext context = new DataContext())
{
context.Entity1.Add(entity);
context.SaveChanges();
}
}
public void Delete(Entity1 entity)
{
using(DataContext context = new DataContext())
{
context.Entity1.Remove(entity);
context.SaveChanges();
}
}
}
解决方案 2:在这种情况下,我想我只会调用一次 db,但我需要记住调用 Dispose()
public Entity1Repository
{
private DataContext context;
public void Add(Entity1 entity)
{
context.Entity1.Add(entity);
}
public void Save()
{
context.SaveChanges();
}
public void Dispose()
{
context.Dispose();
}
}
哪个是最好的实现?(如果我理解正确,单身不是一个好人)