Когда вы Enable-Миграция команды, вам будут представлены с папкой /Миграции, под которым вы можете найти файл с именем Configuration.cs. В конструкторе этого файла, по умолчанию, это свойство установлено в значение:
AutomaticMigrationsEnabled = false;
Какой будет гарантировать, что ваша база данных не будут перенесены автоматически, а путем вызова каждой миграции вручную.
Однако, если ваша база данных больше, чем ваши модели домена, т.е. вы работаете только с частью уже существующей базы данных, то где-то в вашем приложении запускается (если это приложение ASP.NET, Application_Start обработчик событий), вам необходимо добавить следующий код:
Database.SetInitializer<YourDbContext>(null);
в противном случае, Entity Framework будет жаловаться, что существует несоответствие между определением базы данных в вашей модели предметной области и фактического состояния текущей базы данных.
EDIT:
Если вы хотите быть уверены, что YourDbContext не пытается изменить базу данных, сделайте следующее:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new YourCustomException("Code first changes are not allowed.");
}
EDIT снова:
Я пытаюсь чтобы понять, какой сценарий вы пытаетесь выполнить. Если у вас есть существующая база данных, и вы хотите обновить его, но только вручную, этот подход:
- Используйте DbContext шаблон генератор для создания DbContext и объектов из существующей базы данных.
- Run Enable-Миграция
- ли надстройка миграции Initial
- Шаг 3 должен генерировать пустую миграцию, если все было сделано правильно . Вы можете удалить его.
- Теперь, когда вы делаете какое-то изменение, вам нужно добавить-перенаправление ChangeName. Это не будет работать в базе данных, если вы не сделаете обновленную базу данных.
Как вы создали базу данных? EF Code Сначала по умолчанию добавляет таблицу в базу данных, чтобы узнать, изменилась ли ваша модель. Если база данных не была решена с помощью codefirst/migrations, данных в db нет, и EF не коснется схемы базы данных. Если вы говорите о данных - в любое время вы вызываете .SaveChanges() данные в db могут быть добавлены/изменены/удалены – Pawel
Я не занимаюсь разработкой структуры базы данных. Мне нужно, чтобы мой код работал с ним, как есть. NO NO WAY я могу позволить ему изменять объекты. Я попробовал первый подход к базе данных, но нашел его очень ограниченным. Мне нужно иметь возможность передавать случайные объекты соединения в контекст, и БД сначала, похоже, не позволяла этого. – Crono
CodeFirst не изменит вашу базу данных, если она не создала ее. – Pawel