Как правильно проверить, подключена ли программа к 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);
