インターネットアプリケーションプロジェクトテンプレート(フォーム認証を使用)を使用して新しいMVC4 Webアプリケーションを作成する場合、最初に実行して[登録]をクリックすると、context.Database.Exists(InitializeSimpleMembershipAttributeフィルター内)の呼び出しで正しく検出されます。データベースファイルが存在せず、ObjectContext.CreateDatabaseが呼び出され、App_Dataフォルダーにdbfファイルとldfファイルが作成されます。
次に、dbfファイルとldfファイルを削除してアプリを再度実行すると、データベースファイルがなくなっているにもかかわらず、context.Database.Existsの呼び出しはtrueを返します。この動作は永続的であるようです。ObjectContext.CreateDatabaseが呼び出されると、物理ファイルがなくなった場合やPCを再起動した場合でも、データベースが「存在する」ことを覚えているようです。
さて、SQLServerの何かがデータベースの存在を記憶していると思います。そこで、SQL ServerManagementStudioをインストールして実行しました。ただし、\ SQLEXPRESSノードの下のDatabasesフォルダーの下に表示されるのは、SystemDatabasesフォルダーだけです。データベースファイル接続の兆候が見られません。
これはどういうことですか?context.Database.Existがtrueを返すのはなぜですか。また、データベースファイルがなくなった場合にfalseを返すように説得するにはどうすればよいですか。また、SQL Server Management Studioでデータベース接続の証拠が表示されないのはなぜですか?
ボブ