0

В настоящее время я достигаю вышеуказанного следующим образом.Добавление новой модели к существующей с использованием кода First

Вопрос: Правильно ли это подходит для хранения данных в выходящих таблицах в такт. Я чувствую, что делаю это довольно долго. Любые предложения или альтернативные/правильные способы сделать это?

  1. Создать новый объект (модель) и соответствующую DbSet<...> записи в myProjectContext.cs файле
  2. Удалить существующую миграцию из VS2015 и соответствующих __EFMigrationsHistory таблицы из SQL Server Db
  3. Run PM> add-migration mytMigration -context myProjectContext
  4. закомментируйте все код в новообразованном файле mytMigration.cs, за исключением кода, связанного с вновь созданной сущностью (моделью).
  5. Run PM> update-database -context myProjectContext

Новая таблица (соответствующая добавляемого объекта) будет создаваться в Дб, выходящем вместе с новым __EFMigrationsHistory столом. Данные во всех существующих таблицах остаются в такте.

UPDATE:

Я следую это official ASP.NET tutorial и - за их советы - зарегистрировали наш контекст с инъекцией зависимостей следующим образом:

Startup.cs:

public void ConfigureServices(IServiceCollection services) 
     { 
      var connection = @"Server=myDevMachine\SQL2012Instance;Database=myDb;Trusted_Connection=True;"; 
      services.AddDbContext<ABCTestContext>(options => options.UseSqlServer(connection)); 
... 
... 
} 

ответ

1

Вы не должны удалить что-либо существующее. Вы добавили право?

шаги вы должны делать:

  1. Создать новый объект
  2. Добавить DbSet в контексте
  3. Run надстройку миграция newMigrationName
  4. Выполнить обновление базы данных-

Добавить- Миграция рассматривает существующую базу данных и модель и создает миграцию для обновления схемы.

При запуске Update-Database EF проверяет таблицу истории миграции и запускает выполненные миграции.

+0

@junnas Запустив 'add-migration', вы создадите скрипт' Create Table ... 'для всех существующих таблиц (потому что они находятся в файле модели, а затем 'update-database' попытается воссоздать существующие таблицы – nam

+0

Add-migration должен увидеть, что изменилось в текущей модели, и создать миграцию для обновления схемы БД. Это то, что она должна * сделать, если вы не трогаете таблицу истории миграции или существующие миграции. – juunas

+0

@ junnas В 'add-migration' я должен указать имя миграции - и если это одно и то же имя, он жалуется, что имя myFirstMigration используется существующей миграцией'. Если я использую другое имя, это будет создать новую миграцию и новую запись в таблице истории миграции, связанную с этой новой миграцией.Затем «update-migration» запустит эту новую миграцию, которая затем будет жаловаться на то, что «таблица так и так уже существует и т. Д.». – nam