检查是否存在基本DBContext

时间:2017-02-21 14:42:32

标签: c# entity-framework dbcontext

我有一个很少发生的小情况,但我的任务是为它提供漂亮的支票。

目前,如果我们的数据库碰巧被脱机,则输出的系统消息是标准对象具有空引用。我可以通过这个位置的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部分(我们加密连接字符串)。我的问题是我有办法陷入那个电话吗?我考虑过试一试/捕捉它,但是不能确定同时从基本调用中删除它。它可能就是这么简单,但我希望在我删除它然后有问题之前要加倍确定。感谢。

1 个答案:

答案 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
            }
        }