我有一个基本控制器类,它具有以下DbContext。我可以依赖于此,而不是对每个数据库工作使用“using”语句。到目前为止,app按预期运行。我不确定是否真的需要Dispose部件。
private static Context _database;
public static Context Db
{
get
{
if (_database == null)
{
_database = new Context();
}
return _database;
}
}
protected override void Dispose(bool disposing)
{
if (_database == null)
{
_database.Dispose();
}
base.Dispose(disposing);
}
答案 0 :(得分:0)
没有。不知道这里有什么类处理,但如果它被处理掉,那么每次都会崩溃。您必须在调用dispose后设置_database = null,否则您将在处置状态下使用它。如果你想做任何类型的多线程,这将无法正常工作。如果超过1个用户同时使用它,它将崩溃。你也无法用静态单元测试数据库的使用。除非您只是用户,否则它会缓存您在一段时间后导致过时数据的所有数据。
答案 1 :(得分:0)
自动处理请求非常方便,不要将其作为手动任务。
无论如何都不要使用静态,每次请求都要使用using
语句。