2012-03-02 17 views
1

私はEF Codefirst DBを使用していました。私はエンティティをいくつか変更し、DBを再構築したいと考えました。関連していないコーディングエラーのために修正されて以来、再構築されません。だから、私はSQLExpressからDBを削除することができ、let EFはそれを再作成できると考えました。しかし、それは起こらなかった。代わりに、私は今、エラーを取得します。EF Codefirstを使用してDBを再構築できません

ログインで要求されたデータベース "DataAccessTest.MyDBContext"を開くことができません。ログインに失敗しました。 ユーザー 'Server \ Administrator'のログインに失敗しました。

また、イベントではエラーが発生します。

理由:明示的に指定されたデータベースを開くことができませんでした。

そこには存在しないので、当然です。しかし、なぜそれがDBの再作成を止めるのか分かりません。

私はすでに、この投稿hereで説明したコードから手作業で試してみましたが、同じエラーが発生しました。

私は別のサンプルEFプロジェクトを読み込み、それを正常に更新できたので、自分のユーザーの資格情報ではないことを知っています。私はソース管理から別のシステムにプルダウンするとうまく動作するので、自分のコードではないことも知っています。

私は、EFまたはVisual Studioのいずれかが特定のDBで動作するために使用する背景ファイルを混乱させてしまい、そのファイルを消去する方法がわかりません。

どのような考えにも感謝します。

+0

データベースの削除を決定する際に、コードエラーがビルドプロセスにどのように失敗しましたか? –

+0

私はEFを間違って使用していると思っていましたが、実際にはコードが再構築を妨げていましたが、初めて初めて正常に構築できたので、後で再構築することを心配しています。 – jalewis

+0

データベースイニシャライザを設定していますか?そうであればどちらですか? –

答えて

0

DBを手動で削除し、このようなDropCreateDatabaseIfModelChangesイニシャライザを使用してみてください。 MyDbInitializer : DropCreateDatabaseIfModelChanges<MyContext>

+0

提案していただきありがとうございますが、違いは見られませんでした。以前と同じエラーが出ました。 – jalewis

0

物理データベースファイルはどこに作成されていますか?ディレクトリに既存のデータベースmdfファイルとldfファイルがあるという問題が発生しているような気がします。そこに行って見てください。

+0

良い考えですが、私の問題ではないようです。私はSQLExpressインスタンスのデフォルトの場所を変更したことがなく、すべてのテスト用データベースが正常にロードされています。そのディレクトリに私の問題プロジェクトのためのファイルがありません。私は、プロジェクトを再構築して、それが何かをブロックしているかどうかを確認することができると思います。 – jalewis

+0

それも同様に動作します...それは私を毎回燃やすものです。 – ferventcoder

0

回避策は、Web.configの接続文字列の初期カタログ属性を変更することです。それは解決策ではなく機能します。この問題に対する実際の解決策は大歓迎です。

0

削除したdbの名前が分かっている場合は、SQL Server Management Studioを使用して、同じ名前の空のデータベースを手動で作成します。一度EFが探している名前のデータベースを見つけたら、それはうれしいでしょう。

関連する問題