我使用EntityFramework开发了一个ASP.NET MVC应用程序,我想知道在项目中为DbContext实现Singleton Pattern的最佳实践是什么?
这是我的代码:
private static Lazy<DbContext> _instance = new Lazy<DbContext>(()
=> new DbContext());
public static DbContext Instance
{
get
{
if (
_instance.Value.Database.Connection.State ==
System.Data.ConnectionState.Closed
)
_instance.Value.Database.Connection.Open();
return _instance.Value;
}
}
由于每次连接到数据库后关闭的连接状态,在返回DbContext实例之前,我已经检查了连接状态,如果没有打开则打开它。
实际上,我不确定DbContext的实现模式,我想知道在使用DbContext时是否有更好的方法来实现Singleton?我们应该使用Singleton for DbContext吗?
答案 0 :(得分:1)
如果您正在开发CRUD类型的应用程序,那么请按照此处所述调查通用存储库模式:http://www.tugberkugurlu.com/archive/generic-repository-pattern-entity-framework-asp-net-mvc-and-unit-testing-triangle
请注意,上下文是私有实例变量。