7.2.2 Создание схемы для существующей базы данных в EF Core
Создание схемы базы данных генерирует модель Entity Framework из существующей базы данных. Результирующие сущности создаются и сопоставляются со таблицами в указанной базе данных. Для ознакомления с требованиями к использованию EF Core с MySQL, см. таблицу 7.2 «Версии Connector/NET и поддержка Entity Framework Core».
Пакеты NuGet имеют возможность выбора лучшей цели для проекта, что означает, что NuGet устанавливает библиотеки, относящиеся к конкретной версии фреймворка.
Существует два способа создания схемы для существующей базы данных:
В этом разделе показано, как создать схему для базы данных sakila с помощью обоих подходов. Дополнительные методы создания схемы:
Требования
Требования для компонентов, необходимых для воспроизведения каждого подхода к созданию схемы, см. в разделе Общие требования к поддержке EF Core. При использовании подхода с консолью Package Manager определите, какая версия Visual Studio рекомендуется для используемой версии .NET или .NET Core (см. таблицу 2.1 «Требования Connector/NET к связанным продуктам»).
Чтобы скачать базу данных sakila, см. https://dev.mysql.com/doc/sakila/en/.
При обновлении приложений ASP.NET Core до более новой версии фреймворка убедитесь, что используется соответствующая версия EF Core (см. https://docs.microsoft.com/en-us/aspnet/core/migration/30-to-31?view=aspnetcore-3.1).
Создание схемы базы данных с помощью .NET Core CLI
-
Инициализируйте действительный проект .NET Core и консольное приложение с помощью .NET Core командной строки (CLI), а затем перейдите в только что созданную папку (
sakilaConsole).dotnet new console –o sakilaConsolecd sakilaConsole -
Добавьте пакет MySQL NuGet для EF Core с помощью CLI. Например, используйте следующую команду для добавления пакета MySQL EF Core 7.0 для использования с Connector/NET 8.0.33 и более поздними версиями.
dotnet add package MySql.EntityFrameworkCore --version 7.0.2 -
Добавьте следующий
Microsoft.EntityFrameworkCore.Designпакет NuGet:dotnet add package Microsoft.EntityFrameworkCore.Tools -
Восстановите зависимости и инструменты, специфичные для проекта, которые указаны в файле проекта следующим образом:
dotnet restore -
Создайте модель Entity Framework Core, выполнив следующую команду. Строка подключения для этого примера должна включать
database=sakila. Сведения об использовании строк подключения см. в разделе 4.1 «Создание строки подключения Connector/NET».ПримечаниеЕсли вы используете версию коннектора, более раннюю чем Connector/NET 8.0.23, замените
MySql.EntityFrameworkCoreнаMySql.Data.EntityFrameworkCore.dotnet ef dbcontext scaffold "connection-string" MySql.EntityFrameworkCore -o sakila -fЧтобы убедиться, что модель была создана, откройте новую папку
sakila. Вы должны увидеть файлы, соответствующие всем таблицам, сопоставленным с сущностями. Кроме того, найдите файлsakilaContext.cs, который содержитDbContextдля этой базы данных.
Создание схемы базы данных с помощью консоли Package Manager в Visual Studio
Откройте Visual Studio и создайте новый проект Консольное приложение (.NET Core) для C#.
-
Добавьте пакет MySQL NuGet для EF Core с помощью . Например, используйте следующую команду для добавления пакета MySQL EF Core 7.0 для использования с Connector/NET 8.0.33 и более поздними версиями.
Install-Package MySql.EntityFrameworkCore -Version 7.0.2
Установите следующий пакет NuGet, выбрав либо (или , а затем ) в меню :
Microsoft.EntityFrameworkCore.Tools.-
Откройте и введите следующую команду в командной строке для создания сущностей и
DbContextдля базы данныхsakila. Строка подключения для этого примера должна включатьdatabase=sakila. Сведения об использовании строк подключения см. в разделе 4.1 «Создание строки подключения Connector/NET».ПримечаниеЕсли вы используете версию коннектора, более раннюю чем Connector/NET 8.0.23, замените
MySql.EntityFrameworkCoreнаMySql.Data.EntityFrameworkCore.Scaffold-DbContext "connection-string" MySql.EntityFrameworkCore -OutputDir sakila -fVisual Studio создает новую папку
sakilaвнутри проекта, которая содержит все таблицы, сопоставленные с сущностями, и файлsakilaContext.cs.
Создание схемы базы данных путем фильтрации таблиц
Можно указать точные таблицы в схеме для использования при создании схемы базы данных и пропустить остальные. Приведенные ниже примеры командной строки показывают параметры, необходимые для фильтрации таблиц. Строка подключения для этого примера должна включать database=sakila.
Если вы используете версию коннектора, более раннюю чем Connector/NET 8.0.23, замените MySql.EntityFrameworkCore на MySql.Data.EntityFrameworkCore.
.NET Core CLI:
dotnet ef dbcontext scaffold "connection-string" MySql.EntityFrameworkCore -o sakila -t actor -t film -t film_actor -t language -f
Консоль Package Manager в Visual Studio:
Scaffold-DbContext "connection-string" MySql.EntityFrameworkCore -OutputDir Sakila -Tables actor,film,language -f
Создание схемы с несколькими схемами
При создании схемы базы данных можно использовать более одной схемы или базы данных. Обратите внимание, что учетная запись, используемая для подключения к серверу MySQL, должна иметь доступ к каждой схеме, которая должна быть включена в контекст.
Следующие примеры командной строки показывают, как включить схемы sakila и world в рамках одного контекста. Если вы используете версию коннектора, более раннюю чем Connector/NET 8.0.23, замените MySql.EntityFrameworkCore на MySql.Data.EntityFrameworkCore.
.NET Core CLI:
dotnet ef dbcontext scaffold "connection-string" MySql.EntityFrameworkCore -o sakila --schema sakila --schema world -f
Консоль Package Manager в Visual Studio:
Scaffold-DbContext "connection-string" MySql.EntityFrameworkCore -OutputDir Sakila -Schemas sakila,world -f
© 2025 Oracle
Licensed under the GPLv2 License.