建立資料庫的 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) 初始化有效的 .NET Core 專案和主控台應用程式,然後變更為新建立的資料夾 (
sakilaConsole
)。dotnet new console –o sakilaConsole
cd sakilaConsole
使用 CLI 為 EF Core 新增 MySQL NuGet 套件。例如,使用下列命令新增 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
資料夾。您應該會看到與所有對應至實體的表格相對應的檔案。此外,請尋找包含此資料庫的DbContext
的sakilaContext.cs
檔案。
開啟 Visual Studio 並為 C# 建立新的主控台應用程式 (.NET Core)。
使用
為 EF Core 新增 MySQL NuGet 套件。例如,使用下列命令新增 MySQL EF Core 7.0 套件,以便與 Connector/NET 8.0.33 及更新版本搭配使用。Install-Package MySql.EntityFrameworkCore -Version 7.0.2
從
選單中選取 (或 ,然後選取 ),安裝下列 NuGet 套件:Microsoft.EntityFrameworkCore.Tools
。開啟
,並在提示字元中輸入下列命令,以建立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 時要使用的結構描述中的確切表格,並省略其餘的表格。下列命令列範例顯示篩選表格所需的參數。此範例的連線字串必須包含 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 時,您可以使用多個結構描述或資料庫。請注意,用於連線至 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
Visual Studio 中的套件管理員主控台
Scaffold-DbContext "connection-string" MySql.EntityFrameworkCore -OutputDir Sakila -Schemas sakila,world -f