我有一个关于 MVC 的项目。我们为我们的数据库事务选择了 EF。我们为 BLL 层创建了一些管理器。我找到了很多例子,其中using
使用了“”语句,即
public Item GetItem(long itemId)
{
using (var db = new MyEntities())
{
return db.Items.Where(it => it.ItemId == itemId && !it.IsDeleted).FirstOrDefault();
}
}
在这里,我们创建了一个 DBcontext 的新实例MyEntities()
。我们使用“ using
”是为了“确保正确使用 IDisposable 对象”。
这只是我经理的一种方法。但我有十多个。每次我从管理器调用任何方法时,我都会使用“ using
”语句并在内存中创建另一个 DBcontext。垃圾收集器 (GC) 何时处理它们?有人知道吗?
但是管理器方法还有其他用法。我们创建一个全局变量:
private readonly MyEntities db = new MyEntities();
using
并在没有“ ”语句的每个方法中使用 DBcontext 。方法如下所示:
public Item GetItem(long itemId)
{
return db.Items.Where(it => it.ItemId == itemId && !it.IsDeleted).FirstOrDefault();
}
问题:
- 使用 DBcontext 变量的正确方法是什么?
- 如果我们不使用 "
usage
" 语句会怎样(因为它会影响性能) - GC 会为此做些什么?
我是 EF 使用方面的“新手”,但仍然没有找到这个问题的明确答案。