Spec-Zone.ru › MySQL Connectors 1.0

7.2.2 Создание схемы для существующей базы данных в EF Core

Создание схемы базы данных генерирует модель Entity Framework из существующей базы данных. Результирующие сущности создаются и сопоставляются со таблицами в указанной базе данных. Для ознакомления с требованиями к использованию EF Core с MySQL, см. таблицу 7.2 «Версии Connector/NET и поддержка Entity Framework Core».

Пакеты NuGet имеют возможность выбора лучшей цели для проекта, что означает, что NuGet устанавливает библиотеки, относящиеся к конкретной версии фреймворка.

Существует два способа создания схемы для существующей базы данных:

  • Создание схемы базы данных с помощью .NET Core CLI

  • Создание схемы базы данных с помощью консоли Package Manager в Visual Studio

В этом разделе показано, как создать схему для базы данных 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

  1. Инициализируйте действительный проект .NET Core и консольное приложение с помощью .NET Core командной строки (CLI), а затем перейдите в только что созданную папку (sakilaConsole).

    dotnet new console –o sakilaConsole
    
    cd sakilaConsole
    
  2. Добавьте пакет MySQL NuGet для EF Core с помощью CLI. Например, используйте следующую команду для добавления пакета MySQL EF Core 7.0 для использования с Connector/NET 8.0.33 и более поздними версиями.

    dotnet add package MySql.EntityFrameworkCore --version 7.0.2
    
  3. Добавьте следующий Microsoft.EntityFrameworkCore.Design пакет NuGet:

    dotnet add package Microsoft.EntityFrameworkCore.Tools
    
  4. Восстановите зависимости и инструменты, специфичные для проекта, которые указаны в файле проекта следующим образом:

    dotnet restore
    
  5. Создайте модель 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

  1. Откройте Visual Studio и создайте новый проект Консольное приложение (.NET Core) для C#.

  2. Добавьте пакет MySQL NuGet для EF Core с помощью Консоли Package Manager. Например, используйте следующую команду для добавления пакета MySQL EF Core 7.0 для использования с Connector/NET 8.0.33 и более поздними версиями.

    Install-Package MySql.EntityFrameworkCore -Version 7.0.2
    
  3. Установите следующий пакет NuGet, выбрав либо Консоль Package Manager (или Управление пакетами NuGet для решения, а затем Менеджер пакетов NuGet) в меню Инструменты: Microsoft.EntityFrameworkCore.Tools.

  4. Откройте Консоль Package Manager и введите следующую команду в командной строке для создания сущностей и 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 -f
    

    Visual 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.
https://docs.oracle.com/cd/E17952_01/connector-net-en/connector-net-entityframework-core-scaffold-example.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API