Не удается удалить базу данных, поскольку она в настоящее время используется MVC - программирование
Подтвердить что ты не робот

Не удается удалить базу данных, поскольку она в настоящее время используется MVC

Я новичок в использовании 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, но у нескольких людей есть доступ к этой БД, хотя никто не должен использовать его прямо сейчас. Как я могу получить его, чтобы инициализировать эти данные в своей БД? Спасибо!

Изменить: у меня уже есть база данных, созданная на сервере, но она полностью пуста (нет таблиц, процедур и т.д.). Это вызовет проблему?

4b9b3361

Ответ 1

В SSMS запустите что-то вроде этого...

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

Ответ 2

Сегодня я столкнулся с подобной проблемой при использовании MVC codefirst. После 20 минут тестирования различных вещей я заметил, что вкладка "Проводник сервера" в Visual Studio имела соединение, открытое для моей базы данных. После того, как я "закрыл" соединение на вкладке проводника сервера визуальной студии, код смог запустить и автоматически воссоздать базу данных.

Ответ 3

VS2015 close DB connection Как описано Вардхини... закрыть соединение с БД в Server Explorer.

Ответ 4

В окне SSMS "Удалить" убедитесь, что установлен флажок "Закрыть существующие соединения".

Ответ 5

Закрытие всех существующих соединений базы данных в visual studio server explorer и студии SQLManagement решило проблему для меня.

Ответ 6

Мои наблюдения:

  • Невозможно войти в приложение
  • Невозможно подключиться к db с помощью Server Explorer
  • Невозможно подключиться к SSMS

Затем приложение перестраивает БД, даже когда Database.SetInitializer<DbContext>(new DbInitializer()); находится в public DbContext(); - НЕ, как другие оповещения, чтобы положить его в Application_Start();