2011-01-16 7 views
5

次の接続文字列を使用してアプリケーションを実行すると、データベースファイルが正常に作成されます。データベース名を変更せずにEntity Framework Code FirstとMVC 3を使用してSQL Server Expressデータベースを再作成できません

<add name="ConnString1" 
    connectionString="Data Source=.\SQLEXPRESS; 
         Database=Database1; 
         Integrated Security=SSPI; 
         AttachDBFilename=|DataDirectory|aspnetdb.mdf; 
         User Instance=true" 
    providerName="System.Data.SqlClient" /> 

私は、データベースファイルを削除し、データベースファイルを作成することに失敗し、私は、次の内部の例外を取得し、アプリケーションを再度実行しようとした場合:

基になるプロバイダーがOpenで失敗しました。 { "ログインに失敗したログインで要求された。。\ Database1を\ nLoginユーザー 'コンピュータ\\ someuser' に失敗しました。" "開くことができませんデータベース\" Database1を\}

私はデータベース= Database1をを変更した場合Database = Database2接続文字列にデータベースファイルが正常に作成されます。問題は常に繰り返されます。

データベース名を変更せずにデータベースファイルを再作成するにはどうすればよいですか?

+0

aspnetdb.mdf以外のファイル名を使用しようとしましたか?既存のデータベースを削除するためにどのような処置を取っていますか? –

+0

データベースファイルの名前を変更すると、より奇妙になります。 aspnetdb.mdfからaspnet2.mdfに名前を変更すると、 "データベース 'パス\ aspnetdb.mdfが既に存在します。別のデータベース名を選択してください。\ aspnet2.mdfファイルをデータベースDatabaseNameとして添付できません。ここで、pathはパス、DatabaseNameはデータベース名です。Visual Studioでデータベースファイルを右クリックして削除してデータベースファイルを削除しています。 – adolfojp

+0

これに対応する修正プログラムを見つけましたか? xUnitのデータベース作成ステップ最初に正常に動作する、「データベースを開けられない」[データベースの名前]が失敗したのは2回目ですログインが失敗しましたユーザーの[ ] '。 'プロジェクトを再構築するとxUnitで再び動作しますが、再構築せずにテストを実行しようとすると、上記のエラーが発生します –

答えて

1

mdfファイルの削除が許可され、ログインにスキーマ/テーブル権限のドロップがあることを確認してください。ディレクトリ権限は、mdfファイルの一般的な問題です。性質

0

これは古い投稿であることがわかります。うまくいけば、これは同じ苦境の誰かを助けることができます。

最初にアプリケーションを実行すると、問題が発生していないdbがビルドされます。以前にビルドされていないため存在しません。コードは、最初に使用されたモデルのハッシュ値を取得し、それを新しいデータベースに格納します。 - EdmMetadataというテーブルをチェックします。これは、ハッシュ値が格納されているテーブルです。ハッシュ値を使用してモデルがビルドからビルドに変更されたかどうかを確認し、データベースを削除して再構築するかどうかを判断します。

データベースを削除した後で2回目に、モデルハッシュ値を比較するために不足しているデータベースが検索され、データベースが見つからないため、モデルハッシュ値が見つからないことがあります。

私の回避策は、モデルの1つに意味のないフィールド(開発後に削除することを忘れないでください)を追加して、データベースを削除せずに再構築を強制することです。あるいは、dbハッシュ値を変更して強制的に再構築することもできます。

これはコードの最初のアプリケーションデータベースで動作します。メンバーシップデータベースではそれほど確かではありません。

関連する問題