Как правильно проверить, подключена ли программа к Sql server?

А то слишком много времени уходит, что бы сработал блок catch

введите сюда описание изображения

Код сам вот

private void btnVhod_Click(object sender, RoutedEventArgs e)
{
    EditInfo editInfo = new EditInfo();
    try 
    {
        foreach (var user in AvtoServicEntities.GetContext().Users)
        {
            if (logBox.Text == user.Login && passBox.Password == user.Password)
            {
                Visibility = Visibility.Hidden;
                UpdateLayout();
                if (user.iDRole == 1)
                {
                    editInfo.EditFrame.Navigate(new ClientPahe());
                    editInfo.Show();
                }
                else if (user.iDRole == 2)
                {
                    editInfo.EditFrame.Navigate(new ManegerPahe());
                    editInfo.btnManeger.Visibility = Visibility.Visible;
                    editInfo.btnClient.Visibility = Visibility.Visible;
                    editInfo.btnManeger.IsEnabled = false;
                    editInfo.Show();
                }
                else if (user.iDRole == 3)
                {
                    editInfo.EditFrame.Navigate(new AdmManegerPahe());
                    editInfo.Show();
                }
                break;
            }
            else if (logBox.Text != user.Login || passBox.Password != user.Password)
            {
                if (logBox.Text == user.Login && passBox.Password != user.Password)
                {
                    MesBox.MesBoxErrorPassword();
                    break;
                }
                else if (passBox.Password == user.Password && logBox.Text != user.Login)
                {
                    MesBox.MesBoxErrorLogin();
                    break;
                }
            }
            else if (logBox.Text != user.Login && passBox.Password != user.Password)
            {
                MesBox.MesBoxErrorLoginPassword();
                break;
            }
        }
    }
    catch
    {
        MesBox.MesBoxErrorServer();
    }
}

Ответы (1 шт):

Автор решения: MSDN.WhiteKnight

Примерно так:

var connection = (SqlConnection) AvtoServicEntities.GetContext().Database.Connection;

if (connection.State == ConnectionState.Open)
{
    //подключена
}

Ваш код, впрочем, работает медленно не из-за проверки соединения с сервером, а из-за того, что вы выполняете действия в цикле для всех записей в таблице Users. Возможно, стоит переписать его с использованием LINQ-запросов, которые могут выполнить выборку на стороне сервера:

var selectedUsers = AvtoServicEntities.GetContext().Users.Where((x) => x.Login == logBox.Text && x.Password == passBox.Password);
→ Ссылка