私は小さなコードを生成しようとしています。それは私の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"を期待していました。
そして、それはそれだ!私は、バックグラウンドで起こって、どのようにコントロールを取得することです何見当がつかない。
何が起こっているのですか?これをどのように修正できますか?
お世話になりました、ありがとうございます。私は記事「Code First:Inside DbContext Initialization」を赤色にしていますが、残念なことに私の問題を解決する方法については何の情報も得ていません; – CodeCannibal