22

私は 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を作成しましたが、完全に空です(テーブル、プロシージャなどはありません)。これにより問題が発生しますか?

4

6 に答える 6

48

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

于 2014-04-18T07:28:30.530 に答える
27

SSMSでは、次のようなものを実行します...

USE master -- be sure that you're not on MYDB
ALTER DATABASE MYDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE MYDB;
于 2013-06-13T20:33:33.233 に答える
1

Visual StudioサーバーエクスプローラーとSQLManagementスタジオでデータベースの既存の接続をすべて閉じると、問題が解決しました。

于 2015-04-24T00:04:04.600 に答える