文件首頁
MySQL Connector/NET 開發人員指南
相關文件 下載本手冊
PDF (美式信紙) - 1.3Mb
PDF (A4) - 1.3Mb


MySQL Connector/NET 開發人員指南  /  ...  /  在 EF Core 中建立現有資料庫的 Scaffold

7.2.2 在 EF Core 中建立現有資料庫的 Scaffold

建立資料庫的 Scaffold 會從現有資料庫產生 Entity Framework 模型。產生的實體會被建立並對應至指定資料庫中的表格。如需在 MySQL 中使用 EF Core 的需求概觀,請參閱表 7.2,「Connector/NET 版本與 Entity Framework Core 支援」

NuGet 套件有能力為專案選取最佳目標,這表示 NuGet 會安裝與該特定架構版本相關的程式庫。

有兩種不同的方法可以建立現有資料庫的 Scaffold

本節說明如何使用這兩種方法建立 sakila 資料庫的 Scaffold。其他建立 Scaffold 技術為

需求

如需重現每種建立 Scaffold 方法所需的元件,請參閱EF Core 支援的通用需求。使用套件管理員主控台方法時,請決定建議使用哪個版本的 Visual Studio 來配合使用的 .NET 或 .NET Core 版本 (請參閱表 2.1,「Connector/NET 相關產品需求」)。

若要下載 sakila 資料庫,請參閱 https://mysqldev.dev.org.tw/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 建立資料庫的 Scaffold

  1. 使用 .NET Core 命令列介面 (CLI) 初始化有效的 .NET Core 專案和主控台應用程式,然後變更為新建立的資料夾 (sakilaConsole)。

    dotnet new console –o sakilaConsole
    cd sakilaConsole
  2. 使用 CLI 為 EF Core 新增 MySQL NuGet 套件。例如,使用下列命令新增 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 資料夾。您應該會看到與所有對應至實體的表格相對應的檔案。此外,請尋找包含此資料庫的 DbContextsakilaContext.cs 檔案。

在 Visual Studio 中使用套件管理員主控台建立資料庫的 Scaffold

  1. 開啟 Visual Studio 並為 C# 建立新的主控台應用程式 (.NET Core)

  2. 使用套件管理員主控台為 EF Core 新增 MySQL NuGet 套件。例如,使用下列命令新增 MySQL EF Core 7.0 套件,以便與 Connector/NET 8.0.33 及更新版本搭配使用。

    Install-Package MySql.EntityFrameworkCore -Version 7.0.2
  3. 工具選單中選取套件管理員主控台(或管理解決方案的 NuGet 套件,然後選取NuGet 套件管理員),安裝下列 NuGet 套件:Microsoft.EntityFrameworkCore.Tools

  4. 開啟套件管理員主控台,並在提示字元中輸入下列命令,以建立 sakila 資料庫的實體和 DbContext。此範例的連線字串必須包含 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 檔案。

透過篩選表格來建立資料庫的 Scaffold

可以指定在建立資料庫 Scaffold 時要使用的結構描述中的確切表格,並省略其餘的表格。下列命令列範例顯示篩選表格所需的參數。此範例的連線字串必須包含 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

Visual Studio 中的套件管理員主控台

Scaffold-DbContext "connection-string" MySql.EntityFrameworkCore -OutputDir Sakila -Tables actor,film,language -f

使用多個結構描述建立 Scaffold

在建立資料庫的 Scaffold 時,您可以使用多個結構描述或資料庫。請注意,用於連線至 MySQL 伺服器的帳戶必須有權存取要包含在內容中的每個結構描述。

下列命令列範例說明如何在單一內容中納入 sakilaworld 結構描述。如果您使用的連接器版本早於 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

Visual Studio 中的套件管理員主控台

Scaffold-DbContext "connection-string" MySql.EntityFrameworkCore -OutputDir Sakila -Schemas sakila,world -f