141

ここで説明されている正確な問題が発生しています(セクション「削除された MDF ファイルにアタッチできません」をお読みください) が、問題の解決策は記載されていません...

つまり、.mdfファイルを削除した後、EF 5.0 を使用して DB にアクセスしようとすると、次の例外がスローされるという問題があります。

DataException->EntityException->SqlException:
ファイル '{0}' をデータベース '{1}' として添付できません

私はDBファイルを削除しましたが、アプリケーションがイニシャライザを使用することを期待してアプリケーションを実行すると、厄介なエラーメッセージが表示されます。これを修正する方法はありますか?

4

12 に答える 12

223

DB ファイルを削除しても、SqlLocalDB に登録されたままになります。DBを削除すると直ることもあります。これは、コマンド ラインから実行できます。

  1. スタート/プログラムメニューの下にある「VisualStudioの開発者コマンドプロンプト」を開きます。
  2. 次のコマンドを実行します。

    sqllocaldb.exe stop v11.0

    sqllocaldb.exe delete v11.0

于 2013-05-02T13:22:58.633 に答える
148

まだ解決策を探している人のために...

View / SQL Server Object Explorer に移動し、(localdb)\v11.0 サブノードからデータベースを削除してください!
ここに画像の説明を入力

基本的に、ファイルがあるべき場所のローカル データベースが保持されます。データベース ファイルを削除する場合は、手動ではなく、必ずこのエクスプローラ ユーティリティから削除してください。

于 2013-04-05T11:00:43.503 に答える
19

最初に JSobell のソリューションを試しましたが、そこにデータベースがリストされていませんでした。VS Developer Command Prompt から CodingWithSpike のコマンドを実行しましたが、それも機能しませんでした。最後に、Package Manager Console から CodingWithSpike の同じコマンドを実行したところ、うまくいきました。

    PM> sqllocaldb.exe stop v11.0
    LocalDB instance "v11.0" stopped.

    PM> 
    PM> sqllocaldb.exe delete v11.0
    LocalDB instance "v11.0" deleted.

    PM> sqllocaldb.exe start v11.0
    LocalDB instance "v11.0" started.
于 2014-06-25T20:42:15.100 に答える
9

大丈夫。

私の解決策は簡単で、ローカルサーバーを使用するように変更しました:

DataSource接続文字列の属性を次のように変更しました。

Data Source=(LocalDb)\v11.0;blah

に:

Data Source=.\SQLEXPRESS;blah

もう 1 つの解決策は、SQL Management Studio 経由で LocalDb にログインし、そのデータベースを削除してみることです。

ここに画像の説明を入力

しかし、それは私にとってはうまくいきませんでした。削除しようとすると、「TITLE: Microsoft SQL Server Management Studio」と表示されます

データベース '{0}' はサーバーに存在しません。(SqlManagerUI)

デタッチしようとすると、デタッチ選択のリストにデータベースが表示されず、「オフラインにする」でも上記のエラーが表示されます。

これは、LocalDB の確実なバグだと思います。

于 2012-11-09T08:17:24.563 に答える
4

最も簡単な修正は、接続文字列で DB の名前を変更することです。代替ソリューションについては、 Rowan Millers のブログHow to Drop a Database from Visual Studio 2012を参照してください。この問題は、将来の版で修正される予定です。

于 2013-09-30T17:53:56.720 に答える
1

私の場合、移行を使用し、設定で dataContext と dataContext クラス自体の名前を変更しただけで(名前を変更するだけです)、もう一度やり直してください。

于 2015-11-27T05:46:22.317 に答える
0

同じ問題があり、「DataDirectory」フォルダーをアプリバイナリの別のフォルダーに手動で設定することで解決しました。

Global.asax の Application_Start メソッドに次の行を追加します。

AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data"));

現在、接続文字列は次のように設定されています。

<connectionStrings>
    <add name="DataContext" connectionString="Data Source=(LocalDb)\v11.0; Initial Catalog=DataContext; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|DataContext.mdf"
  providerName="System.Data.SqlClient" />

于 2013-05-22T16:25:47.590 に答える