4

Entity Framework で Code First の概念を使用していますが、アプリケーションの起動中に常に次の例外が発生します。

Cannot attach the file 'C:\Users\Admin\Documents\Visual Studio 2012\
Projects\Pro\Pro.Web\App_Data\Pro.mdf' as database 'Pro'.

私はこれを入れましたGlobal.asax.csが、成功しませんでした:

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ProWebContext>());
        var ctx = new ProWebContext();
        ctx.Database.Initialize(true);

App_Data ディレクトリの下を確認しましたが、データベースが作成されていません。また、サーバー エクスプローラーの [データ接続] には何もありません。昨日はすべて正常に機能していましたが、今日はまったく機能しませんでした。SQL Server Management Studio を使用して LocalDB に接続しようとしましたが、ローカル データベースに接続できないと表示されます。何が問題になる可能性がありますか?

ありがとう!

4

4 に答える 4

5

解決策を見つけました。最新の SQL Server Management Studio では、ローカル データベースへの接続に問題はありません。接続は次のように確立する必要があります。

ここに画像の説明を入力

ログイン後、Visual Studio のサーバー エクスプローラーの App_Data ディレクトリとデータ接続の下に何もない場合でも、古いデータベースが存在することがわかります。そのデータベースを SQL Server Management Studio から削除し、アプリケーションを再起動すると、データベースのアタッチ中にエラーが発生しなくなります。

于 2013-03-31T17:00:38.483 に答える
0

これを見たときに同じエラーに直面していましたが、SQL Server Management Studio を使用してデータベースを削除できなかったので思い出しIDatabaseInitializerました。

Code First コンテキストのデータベース初期化子を設定すると、問題が解決しました。私の場合、DB を常にドロップするように初期化子を追加するとうまくいきました (コンテキストの静的コンストラクターにコードを追加しました。ほとんどの人はそれを Global.asax に追加します)。

    static SomeDbContext()
    {
        System.Data.Entity.Database.SetInitializer(new DropCreateDatabaseAlways<SomeDbContext>());
    }

もちろん、他の初期化子もあります。

于 2013-10-20T19:30:30.043 に答える