Я пытаюсь создать небольшой код, который проверяет, что мой SQL-сервер подключается. И: если да, то он должен проверить, существует ли база данных. Позвольте мне объяснить это с помощью кода.Проверка статуса первого соединения Framework Entity Framework
Это мой главный-метод:
private static void Main(string[] args)
{
Database.SetInitializer<MyDbContext>(new DropCreateDatabaseAlways<MyDbContext>());
Console.WriteLine(CheckIfDatabaseExists("Data Source=127.0.0.1\\SQLEXPRESS2;Initial Catalog=SQLTest;Integrated Security=True;Connect Timeout=3"));
Console.WriteLine(CheckIfDatabaseExists("Data Source=127.0.0.1\\SQLEXPRESS;Initial Catalog=SQLTest;Integrated Security=True;Connect Timeout=3"));
Console.WriteLine(CheckIfDatabaseExists("Data Source=127.0.0.1\\SQLEXPRESS2;Initial Catalog=SQLTest;Integrated Security=True;Connect Timeout=3"));
}
Как вы можете себе представить: есть существующая база данных «SQLTest» на моем локальном сервере SQL 'SQLEXPRESS. Но: нет такого сервера, как «SQLEXPRESS2»!
Хорошо - больше кода. А вот мой метод проверки:
public static DatabaseExistsStatus CheckIfDatabaseExists(String connString)
{
try
{
using (var db = new MyDbContext(connString))
{
bool DbExists = db.Database.Exists();
if (DbExists)
{
// database is existing
return DatabaseExistsStatus.EXISTING;
}
else
{
// config is working, but database does not exist
return DatabaseExistsStatus.NO_DB;
}
}
}
catch (Exception)
{
// no working config
return DatabaseExistsStatus.NO_CONNECTION;
}
}
public enum DatabaseExistsStatus
{
EXISTING,
NO_CONNECTION,
NO_DB
}
Начиная мое приложение приносит следующий результат:
NO_CONNECTION
EXISTING
NO_DB
я запутался! Я ожидал «NO_CONNECTION, СУЩЕСТВУЮЩИЙ, NO_CONNECTION».
И все, я не знаю, что происходит в фоновом режиме и как получить контроль.
Что происходит там и как я могу это исправить?
Эй, спасибо, за вашу помощь. Я краю статью «Code First: Inside DbContext Initialization» - но, к сожалению, я не получаю никакой информации о том, как исправить мою проблему;) Кто-нибудь здесь, кто мог бы дать мне другие советы? – CodeCannibal