Ответ 1
В SSMS запустите что-то вроде этого...
USE master -- be sure that you're not on MYDB
ALTER DATABASE MYDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE MYDB;
Я новичок в использовании 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, но у нескольких людей есть доступ к этой БД, хотя никто не должен использовать его прямо сейчас. Как я могу получить его, чтобы инициализировать эти данные в своей БД? Спасибо!
Изменить: у меня уже есть база данных, созданная на сервере, но она полностью пуста (нет таблиц, процедур и т.д.). Это вызовет проблему?
В SSMS запустите что-то вроде этого...
USE master -- be sure that you're not on MYDB
ALTER DATABASE MYDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE MYDB;
Сегодня я столкнулся с подобной проблемой при использовании MVC codefirst. После 20 минут тестирования различных вещей я заметил, что вкладка "Проводник сервера" в Visual Studio имела соединение, открытое для моей базы данных. После того, как я "закрыл" соединение на вкладке проводника сервера визуальной студии, код смог запустить и автоматически воссоздать базу данных.
Как описано Вардхини... закрыть соединение с БД в Server Explorer.
В окне SSMS "Удалить" убедитесь, что установлен флажок "Закрыть существующие соединения".
Закрытие всех существующих соединений базы данных в visual studio server explorer и студии SQLManagement решило проблему для меня.
Мои наблюдения:
Затем приложение перестраивает БД, даже когда Database.SetInitializer<DbContext>(new DbInitializer());
находится в public DbContext();
- НЕ, как другие оповещения, чтобы положить его в Application_Start();