Создал модель (Code fluent):
public PersonConfig()
{
HasKey(id => id.PersonID);
Property(name => name.Name).IsRequired().HasMaxLength(50);
}
public class Person
{
public int PersonID { get; set; }
public string Name { get; set; }
}
class CodeContext: DbContext
{
public CodeContext(string connectionString) : base( connectionString)
{
}
public DbSet<Person> Person{ get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new PersonConfig());
base.OnModelCreating(modelBuilder);
}
}
После, во viewmodel отправляю строку, делаю инициализацию:
try
{
using (var cnxt = new CodeContext(connectionString))
{
cnxt.Database.Initialize(true);
}
}
catch (Exception ex)
{
MessageBox.Show("Произошла ошибка с сервером");
}
Проблема такая: если обращаюсь на сервер, который есть, то все отлично, после с ним работаю (если бд нет, создает, если есть, то использует ее). Но если строка сервера неверна, то загрузка идет около 01:07 минут, и только после перемещается в catch(exception ex). Как время обращения к серверу уменьшить?? Или как проверить, корректно ли сервер ввели. Со временем я пытался в CodeContext писать, чтобы 30 секунд, но не работает.:
this.Database.CommandTimeout = 30;
Как решить эту проблему? Мб я неверно делаю инициализацию, хотя по-другому не получается, да и если строка сервера верна, то обращение идет без проблем (но обращение к корректному серверу, изначально, около 8 секунд, что, как кажется, будет много, ведь обращаюсь к себе)?
Вы используете таймаут команды, который определяет таймаут выполнения запроса (который будет справедлив после установления соединения с БД). В вашем случае, вам нужен таймаут подключения, который говорит о времени ожидании подключения к базе данных, а точнее, через какое время это ожидание будет прервано и будет сгенерирована ошибка.
The length of time (in seconds) to wait for a connection to the server before terminating the attempt and generating an error.
можете указать его прямо в строке подключения к базе данных
Connection Timeout=60;
Но, это так, если я обращаюсь к несуществующему серверу, если сервер есть (я пробовал обратиться к себе от прав не администратора, к администратору, к чему доступа как раз нет), и время обращения было 6 секунд! Каков алгоритм времени? Как он выбирает, как и быть теперь?
Параметр Connection Timeout определяет как долго служба SQL будет отвечать на попытку соединения. Другими словами, эту попытку сперва нужно предпринять, достучавшись до сервера SQL. Этот параметр не регулирует время сетевых задержек, проблем с DNS или другие проблемы.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники