Обновление модели в EF Core при подходе Db-First

103
28 мая 2021, 00:00

Я использовал в проекте EntityFramework Core с подходом database first и создал модель данных по документации.

Но я не знаю, как обновить модель, когда база изменилась.

В EF 6 был инструмент обновления модели:

Который запускал отдельный Wizard:

Похоже, что такого инструмента больше нет.

Свободный перевод вопроса How to update the model when using database first approach от участника @witson.

Answer 1

Подобного инструмента в EF Core нет (на текущий момент EF Core 2.2 и похоже не будет в планах как минимум до EF Core 3.0)

Что можно сделать?

Вы можете заново запустить скафолд модели: ту же самую команду, которой изначально генерировали, только с добавлением ключа -Force -- это приведёт к тому, что содержимое модели будет перезаписано поверх изначальной модели.

Например, используя Package Manager Console команда будет вида:

Scaffold-DbContext "Server=(localdb)\v11.0;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force

Альтернативно, используя CLI команда будет вида:

dotnet ef dbcontext scaffold "Server=(localdb)\v11.0;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models -f
Дополнительный совет

Если вы постоянно обновляете модель, вот удобный способ облегчить процесс.

Зайдите в меню Tools > External Tools, затем кликните Add и заполните параметры следующим образом:

Title:

Update DbContext

Command:

dotnet.exe

Arguments:

ef dbcontext scaffold "your-connection-string" Microsoft.EntityFrameworkCore.SqlServer --output-dir=Models --force

Initial directory:

$(ProjectDir)

Опционально можно поставить галку "Use Output window", после чего нажмите Apply и OK.

Когда вы снова зайдёте в меню Tools, в нём появится ваш новый пункт меню -- остаётся просто нажать, чтобы запустить обновление модели!

Свободный перевод ответа How to update the model when using database first approach от участника @Mike Brind и ответа How to update the model when using database first approach от участника @Yom S..

READ ALSO
Запись разных значений в Sql server

Запись разных значений в Sql server

Есть exe программа, написанная на C#Она записывает значения в SQL Server

89
Спецификация AVI файлов

Спецификация AVI файлов

Есть ли нормальная спецификация формата файлов AVI?

111
Директивы компилятора для xaml, wpf

Директивы компилятора для xaml, wpf

Расскажите пожалуйста, можно ли добиться возможности использования директив компилятора в xaml, wpfЕсли можно, то как?

194
The chromedriver file does not exist in the current directory or in a directory on the PATH

The chromedriver file does not exist in the current directory or in a directory on the PATH

Формат драйвера, ниже прописал ошыбку ChromeOptions options = new ChromeOptions(); optionsAddUserProfilePreference("profile

247