无法删除数据库,因为它当前正在使用 - EF代码优先

时间:2013-07-26 16:03:04

标签: entity-framework ef-code-first connection-string

在我的配置中,我有这个:

public sealed class Configuration : DbMigrationsConfiguration<App.Repository.NogginatorDbContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
    }

    protected override void Seed(AppDbContext context)
    {
        SqlConnection.ClearAllPools();
        //context.Database.CreateIfNotExists();
        System.Data.Entity.Database.SetInitializer(new DropCreateDatabaseAlways<AppDbContext>());

        if (!WebMatrix.WebData.WebSecurity.Initialized)
        {
            WebSecurity.InitializeDatabaseConnection("TestConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
        }
     }
 }

这用于删除并每次都重新创建的测试数据库。虽然当我从包管理器控制台点击“update-database”时,即使在运行之前手动删除数据库,我也会得到:

  

无法删除数据库“Nogginator.Test”,因为它当前正在使用中。

我的连接字符串:

<add name="TestConnection" 
     providerName="System.Data.SqlClient" 
     connectionString="Data Source=.\;Initial Catalog=App.Test;Trusted_Connection=True;MultipleActiveResultSets=True;" />

为什么会这样?

1 个答案:

答案 0 :(得分:9)

如果您最近正在调试Web应用程序,请确保IIS Express仍未运行,并且没有与IIS Express关联的w3wp.exe进程。此过程可能仍然持有数据库连接。