我想產生一個小代碼,檢查,然後我的SQL服務器是可連接的。如果是這樣,那麼它應該檢查數據庫是否存在。 讓我通過代碼來解釋它。實體框架代碼第一次連接狀態檢查
這是我的主方法:
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"));
}
你可以想像:有我的本地SQL服務器「SQLEXPRESS」上的現有數據庫「sqltest語句」。 但是:沒有像'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,EXISTING,NO_CONNECTION」。
就是這樣!我不知道背景中發生了什麼以及如何控制。
發生了什麼,我該如何解決這個問題?
嘿,那裏,謝謝你的幫助。我將文章「代碼優先:內部DbContext初始化」 - 但不幸的是我沒有得到如何解決我的問題的信息;)任何人在這裏誰可以給我一些其他的提示? – CodeCannibal 2012-04-23 06:57:28