使用 Linq 检测数据库连接错误?
在使用 Linq 收到应用程序“传输级错误”之前,是否可以检测到连接中的错误?
假设我有一个名为 SQLServer1 的 SQL 服务器,并且我正在运行一个应用程序,该应用程序使用 LinQ 连接到该服务器以获取一些信息。
我决定将服务器名称更改为 SQLServer2。 下次运行我的应用程序时,我将收到如下错误:
“从服务器接收结果时发生传输级错误。(提供程序:TCP 提供程序,错误:0 - 指定的网络名称不再可用) .)"
因为 LinQ 不知道发生了变化!
我怎样才能在运行时捕捉到这个? 是否可以扩展 DataContext 类以在获取数据之前以某种方式检查连接?
谢谢!
Is it possible to detect an error in a connection before we get an application "Transport-level error" using Linq?
Lets say that I have a SQL server called SQLServer1, and I am running an application that connects to that server using LinQ to get some information.
I decide to change the server Name to SQLServer2.
The next time my application run I will get an error like this:
"A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The specified network name is no longer available.)"
Because LinQ doens't know that there was a change!
How can I catch this during runtime?
Is it possible to extend the DataContext class to check somehow the connection before getting the data?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
以下是我扩展课程的方法。 我使用单例模式来调用数据上下文,这会导致每个页面请求都会实例化一个数据上下文对象,而不管单例被调用的次数如何。 在每个请求第一次调用单例时,我运行 DataContext.DatabaseExists(),如果它是 false,我会优雅地处理错误。 现在,每当我的任何代码尝试对数据上下文执行任何操作时,它都会向我的用户提示“抱歉,数据库已关闭”消息。
ASP.NET C# 代码:
Here's how I've extended the class. I use a singleton pattern for calling the data context, which results in one data context object being instantiated per page request regardless of the number of times the singleton is called. On the first call to the singleton per request, I run DataContext.DatabaseExists(), and if it is false, I gracefully handle the error. Now whenever any of my code attempts to do anything with the datacontext, it prompts my users with a "sorry, the database is down" message.
ASP.NET C# code: