web-dev-qa-db-ja.com

現在MVCを使用しているため、データベースを削除できません

私はMVCを使用するのが初めてで、アプリケーションを最初に起動したときに、イニシャライザを使用してデータをDBに初期化しようとしています。以下は、Global.asax.csにあるものです。

 System.Data.Entity.Database.SetInitializer(new MyAppInitializer());
 MyAppContext db = new MyAppContext();
 db.Database.Initialize(true);

Web.configでの接続文字列は次のとおりです。

<connectionStrings>
  <add name="MyAppContext"
  connectionString="data source= MyServer; Integrated Security=True; database=MyDatabase"
  providerName="System.Data.SqlClient"/>

これはMS SQL 2008 R2を使用しています。私のイニシャライザは次のようになります。

public class MyAppInitializer : DropCreateDatabaseAlways<MyAppContext>
{
    protected override void Seed(MyAppContext context)
    {
        var organizations = new List<Organizations>
        {
            new Organizations { OrgName = "AT", OrgPhone = 5093333433, OrgOfficeLocation = "ITB", OrgPointOfContact = "Tony", OrgIsActive = 1 },
            new Organizations { OrgName = "Libraries", OrgPhone = 5093331122, OrgOfficeLocation = "Holland-Terrell", OrgPointOfContact = "Herald", OrgIsActive = 1 }
        };
        organizations.ForEach(s => context.Organizations.Add(s));
        context.SaveChanges();

SQL Server Management Studioでサーバーとデータベースへの接続を確実に閉じるようにしましたが、このDBには複数のユーザーがアクセスできますが、現時点では誰も使用していません。 DBでこのデータを初期化できるようにするにはどうすればよいですか?ありがとう!

編集:私はすでにサーバー上に作成されたDBを持っていますが、それは完全に空です(テーブル、プロシージャなどはありません)。これは問題を引き起こしますか?

20
SantasNotReal

SSMSでこのようなものを実行してください...

USE master -- be sure that you're not on MYDB
ALTER DATABASE MYDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE MYDB;
25
Sam

MVC codefirstを使用するときに、今日同様の問題に直面しました。さまざまなことを20分間試してみたところ、Visual Studioの[サーバーエクスプローラー]タブでデータベースへの接続が開かれていることに気付きました。 Visual Studioのサーバーエクスプローラータブで接続を「閉じた」後、コードを実行してデータベースを自動的に再作成できました。

47
TwoPea

VS2015 close DB connection Vardhiniで説明されているように、サーバーエクスプローラーでDB接続を閉じます。

7
Bob Mack

SSMSの[削除]ウィンドウで、[既存の接続を閉じる]がオンになっていることを確認します。

3
Brice

私の観察は:

  1. アプリケーションにログインできません
  2. サーバーエクスプローラーでデータベースに接続できない
  3. SSMSに接続できません

次に、アプリケーションはDatabase.SetInitializer<DbContext>(new DbInitializer());public DbContext();にある場合でもDBを再構築します-他のanswearsがそれをApplication_Start();に配置するのとは異なり

Visual Studio Server ExplorerとSQL Management Studioでデータベースの既存の接続をすべて閉じると、問題が解決しました。

0
Vardhini