Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DBContext使用单例模式的更好方法_C#_Asp.net Mvc_Entity Framework_Singleton - Fatal编程技术网

C# DBContext使用单例模式的更好方法

C# DBContext使用单例模式的更好方法,c#,asp.net-mvc,entity-framework,singleton,C#,Asp.net Mvc,Entity Framework,Singleton,我用EntityFramework开发了一个ASP.NET MVC应用程序,我想知道在项目中实现DbContext的Singleton模式是否是最佳实践 这是我的密码: private static Lazy<DbContext> _instance = new Lazy<DbContext>(() => new DbContext()); public static DbContext Instance { get { i

我用EntityFramework开发了一个ASP.NET MVC应用程序,我想知道在项目中实现DbContext的Singleton模式是否是最佳实践

这是我的密码:

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;
    }
}
private static Lazy _instance=new Lazy()
=>newdbcontext());
公共静态DbContext实例
{
得到
{
如果(
_instance.Value.Database.Connection.State==
System.Data.ConnectionState.Closed
)
_instance.Value.Database.Connection.Open();
返回_instance.Value;
}
}
由于连接状态在每次连接到数据库后都会关闭,因此在返回DbContext实例之前,我检查了连接状态,如果连接状态未打开,则将其打开


实际上,我不确定DbContext的实现模式,我想知道在使用DbContext时,是否有更好的方法来实现Singleton?我们是否应该使用Singleton for DbContext?

如果您正在开发CRUD类型的应用程序,请调查通用存储库模式,如下所述:


请注意,上下文是一个私有实例变量。

如果您正在开发一个CRUD类型的应用程序,请调查通用存储库模式,如下所述:


请注意,上下文是一个私有实例变量。

我在需要时使用抽象工厂创建新的DbContext实例这似乎是一个充满危险的想法。在走这条路线之前,请阅读以下内容:我在需要时使用抽象工厂创建新的DbContext实例这似乎是一个充满危险的想法。请阅读以下内容在走这条路线之前: