22

我是使用 MVC 的新手,我正在尝试在应用程序首次启动时使用初始化程序将数据初始化到我的数据库中。这是我在 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 中关闭了与服务器和数据库的连接,但是有多个人可以访问这个数据库,尽管现在应该没有人使用它。我怎样才能得到它,以便我可以在我的数据库中初始化这些数据?谢谢!

编辑:我已经在服务器上创建了数据库,但它完全是空的(没有表、过程等)。这会引起问题吗?

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 回答
8

VS2015关闭数据库连接 如 Vardhini 所述...在服务器资源管理器中关闭数据库连接。

于 2015-12-16T23:05:05.083 回答
4

在 SSMS“删除”窗口中,确保选中“关闭现有连接”。

于 2015-02-04T22:14:11.457 回答
1

关闭 Visual Studio Server Explorer 和 SQLManagement Studio 中数据库的所有现有连接为我解决了这个问题。

于 2015-04-24T00:04:04.600 回答
0

我的观察是:

  1. 无法登录应用程序
  2. 无法使用服务器资源管理器连接到 db
  3. 无法与 SSMS 连接

然后应用程序重建数据库,即使Database.SetInitializer<DbContext>(new DbInitializer());public DbContext();- 不像其他答案那样将它放入Application_Start();

于 2016-04-22T07:02:48.960 回答