我有一个很少发生的小情况,但我的任务是为它提供漂亮的支票。
目前,如果我们的数据库碰巧被脱机,则输出的系统消息是标准对象具有空引用。我可以通过这个位置的try / catch块捕获这个。但是,可能有多个这样的实例。
我的主要问题如下:我们使用一个默认类来调用DbContext,它叫做DatabaseContext.cs。这个类继承了DbContext,并且在它的构造函数中有一个连接的基本调用。请参阅下文,了解其调用方式。
public partial class DatabaseContext : DbContext
{
public DatabaseContext()
: base(new OracleConnection(Common.Common.Decrypt(ConfigurationManager.
ConnectionStrings["Site"].ToString())), true)
{
}
忽略Decrypt部分(我们加密连接字符串)。我的问题是我有办法陷入那个电话吗?我考虑过试一试/捕捉它,但是不能确定同时从基本调用中删除它。它可能就是这么简单,但我希望在我删除它然后有问题之前要加倍确定。感谢。
答案 0 :(得分:0)
private static bool CheckConnection ()
{
bool flag = false;
try
{
using (var context = new ApplicationDbContext())
{
if (context.Users.FirstOrDefault() != null)
{
// thismeans all is well on DBContext
flag= true;
}
}
}
catch( Exception t )
{
Debug.WriteLine("Error connecting to DB ");
flag= false;
}
return flag;
}
// use it like this in global.assax.cs
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
if( CheckConnection())
{
// set session variable of something else to show to user
}
}