Чтобы сгенерировать контекст для существующей базы данных на SQL сервере, нужно добавить в решение несколько пакетов и выполнить команду для скаффолдинга:
NuGet\Install-Package Microsoft.EntityFrameworkCore
NuGet\Install-Package Microsoft.EntityFrameworkCore.SqlServer
NuGet\Install-Package Microsoft.EntityFrameworkCore.Tools
NuGet\Install-Package Microsoft.Extensions.Configuration
Собственно, сам скаффолдинг:
Scaffold-DbContext "Data Source=SQLSrverInstance;Initial Catalog=dbname;User ID=login;Password=****;MultiSubnetFailover=True" Microsoft.EntityFrameworkCore.SqlServer -Tables MyTable
Но бывает, что дальше идет сообщение об ошибке: A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - Цепочка сертификатов выпущена центром сертификации, не имеющим доверия.) Голову сломал, прежде чем сообразил.
Проблема была связана с устаревшим протоколом шифрования на SQL сервере TLS 1.1 или еще хуже. По-хорошему, надо обновить протокол шифрования, но как временное решение подойдет такое решение - в строку подключения надо добавить TrustServerCertificate=true.
Scaffold-DbContext "Data Source=SQLSrverInstance;Initial Catalog=dbname;User ID=login;Password=****;TrustServerCertificate=true" Microsoft.EntityFrameworkCore.SqlServer -Tables MyTable
После создания контекста, можно вносить изменения в базу из контекста и классов. Для этого можно добавлять миграции и применять их.
Добавить миграцию из консоли (сначала надо установить поддержку ef CLI командой dotnet tool install --global dotnet-ef )
dotnet ef migrations add the_migration_title
или из PackageManager console
Add-migration the_migration_title
Применить миграцию к базе:
dotnet ef database update
или из PackageManager console
Update-database
Удалить последнюю миграцию:
dotnet ef migrations remove