Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/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
使用Linq检测数据库连接错误?_Linq_Connection_Datacontext_Connection Pooling - Fatal编程技术网

使用Linq检测数据库连接错误?

使用Linq检测数据库连接错误?,linq,connection,datacontext,connection-pooling,Linq,Connection,Datacontext,Connection Pooling,在使用Linq获得应用程序“传输级别错误”之前,是否可以检测连接中的错误 假设我有一个名为SQLServer1的SQL服务器,我正在运行一个应用程序,该应用程序使用LinQ连接到该服务器以获取一些信息 我决定将服务器名称更改为SQLServer2。 下一次运行应用程序时,我将遇到如下错误: 从服务器接收结果时发生传输级别错误。(提供程序:TCP提供程序,错误:0-指定的网络名称不再可用。) 因为林克不知道有什么变化 我如何在运行时捕捉到这一点? 是否可以扩展DataContext类,以便在获取数

在使用Linq获得应用程序“传输级别错误”之前,是否可以检测连接中的错误

假设我有一个名为SQLServer1的SQL服务器,我正在运行一个应用程序,该应用程序使用LinQ连接到该服务器以获取一些信息

我决定将服务器名称更改为SQLServer2。 下一次运行应用程序时,我将遇到如下错误:

从服务器接收结果时发生传输级别错误。(提供程序:TCP提供程序,错误:0-指定的网络名称不再可用。)

因为林克不知道有什么变化

我如何在运行时捕捉到这一点? 是否可以扩展DataContext类,以便在获取数据之前以某种方式检查连接


谢谢

以下是我如何扩展课程的内容。我使用单例模式来调用数据上下文,这会导致每个页面请求实例化一个数据上下文对象,而不管调用单例的次数如何。在每个请求第一次调用singleton时,我运行DataContext.DatabaseExists(),如果为false,我将优雅地处理错误。现在,每当我的任何代码试图对datacontext执行任何操作时,它都会提示我的用户“对不起,数据库已关闭”消息

try
{
   // run linq query here
}
catch (Exception e)
{
   // take appropriate action to handle the error like updating the connection string, etc.
}
ASP.NET C#代码:


我想这是LinqToSQL,实际上不是Linq。谢谢你的回答。但更准确地说,我正在寻找一种通过扩展DataContext类来进行验证的方法。如何做到这一点?我有没有办法操纵连接池并发现我的连接不正常?再次感谢。您也许可以使用DbConnection属性。如果只是想进行快速检查,可以在try-catch块内关闭并重新打开DbConnection,然后如果出现错误,可以将DbConnection上的连接字符串设置为新值,然后再次尝试打开它。
namespace dal
{
    public partial class DataModelDataContext
    {
        public static DataModelDataContext DataContext
        {
              get
              {
                  if (System.Web.HttpContext.Current.Items["ModelDataContext"] == null)
                  {
                      DataModelDataContext datacontext = new DataModelDataContext();
                      //Once per page request, of the datacontext is requested, check to see if the database connection is valid.
                      if (!datacontext.DatabaseExists())
                      {
                           System.Web.HttpContext.Current.Response.Redirect("DatabaseIsDown.html");
                      }
                      System.Web.HttpContext.Current.Items["ModelDataContext"] = datacontext;

                  }
                  return (DataModelDataContext)System.Web.HttpContext.Current.Items["ModelDataContext"];
              }
        }
    }
}