【发布时间】:2017-07-11 06:11:39
【问题描述】:
我有一个很少发生的小情况,但我的任务是为它提供一个漂亮的检查。
目前,如果我们的数据库碰巧被踢下线,得到输出的系统消息是标准对象有空引用。我可以通过这个位置的 try/catch 块来捕获它。但是,这种情况可能有多个实例。
我的主要问题如下:我们有一个用于调用 DbContext 的默认类,称为 DatabaseContext.cs。这个类继承了 DbContext,并且在它的构造函数中有一个连接的基调用。请参阅下文了解它的调用方式。
public partial class DatabaseContext : DbContext
{
public DatabaseContext()
: base(new OracleConnection(Common.Common.Decrypt(ConfigurationManager.
ConnectionStrings["Site"].ToString())), true)
{
}
忽略解密部分(我们加密我们的连接字符串)。我的问题是有没有办法可以捕获那个电话?我想过围绕它进行尝试/捕获,但不确定是否同时将其从基本调用中删除。可能就是这么简单,但我想在删除它然后遇到问题之前加倍确定。谢谢。
【问题讨论】:
-
那么您想检查连接字符串是否有效或 DBContext 可以成功创建?
-
@YashveerSingh 我正在检查以确保 DbContext 存在并且处于活动状态。如果连接因任何原因被切断(数据库服务器关闭),我需要尽可能友好地告诉用户。
-
@IyaTaisho 所以问题是你需要检查多少间隔? od 这是您进行部署时需要测试的内容吗?如果您需要间隔执行,那么您可以创建一个作业(Quartz 调度程序),它将执行演示查询或仅创建一个 DBContext 对象。
-
@YashveerSingh 不,我不需要检查间隔。我只是在检查以确保我是否可以在基本调用中检查连接是否处于活动状态。如果是,那很好,不需要发生任何事情。如果它处于非活动状态,我需要向用户返回一个他们会理解的原因,而不是空引用语句。我有一种感觉,我需要按原样将调用扩展到基本调用之外,但要确定。
标签: c# entity-framework dbcontext