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