.NET Core 3.1
, MySQL
, MVC
, Synology
, Docker
本文由 Grok AI 協助編輯
本文介紹如何在 .NET Core 3.1 應用程式中整合 MySQL 資料庫,延續前兩篇文章的 SimpleWeb
專案,並展示如何擴展功能以連線 MySQL 資料庫。本文假設讀者已熟悉第一篇的部署流程和第二篇的 Oracle 整合範例。我們將沿用第二篇的「書籍清單」範例,改用 MySQL 作為資料庫,並部署至 Synology NAS 的 Docker 環境。
實驗環境
在前兩篇文章中,我們部署了一個基本的 ASP.NET Core 3.1 MVC 應用程式並整合了 Oracle 資料庫。本文將使用相同的「書籍清單」功能:
此功能將沿用第二篇的模型和視圖,僅更換資料庫為 MySQL。
在 SimpleWeb
專案中,安裝以下套件:
MySql.Data.EntityFrameworkCore
(版本與 .NET Core 3.1 相容,例如 8.0.22)。Microsoft.EntityFrameworkCore
3.1.10),無需重複安裝。使用命令列:
使用現有模型:
Book.cs
(位於 Models
資料夾):
建立 MySqlDbContext
:
Data
資料夾中新增 MySqlDbContext.cs
:
OracleDbContext
類似,MySqlDbContext
管理 MySQL 資料庫連線,DbSet<Book>
映射到 BOOKS
表格。編輯 appsettings.json
:
<mysql_host>
、<user>
、<password>
,例如:"Server=192.168.1.200;Database=book_db;User=root;Password=mypass"
。編輯 Startup.cs
:
BooksController
:
Controllers
資料夾中新增 BooksController.cs
(與第二篇相同,僅更換上下文):
Views/Books
資料夾中新增 Index.cshtml
(與第二篇相同):
訪問 http://<NAS_IP>:62005/Books
時的模擬輸出(與第二篇一致):
/Books/Add
,資料為:title=To Kill a Mockingbird&author=Harper Lee
。BooksController.Add
。Add
方法接收 title
和 author
,創建 Book
物件。_mySqlDbContext.Books.Add(book)
標記為待新增。_mySqlDbContext.SaveChanges()
執行 SQL:
book.Id
。Index
。title
和 author
)映射到 Add
方法的參數。表單中 <input name="title">
和 <input name="author">
的 name
屬性必須與參數名稱一致。string titleName, string authorName
,表單需調整為:
MySQL 不需額外依賴,沿用簡化版 Dockerfile:
libaio1
和 NLS_LANG
,因為 MySQL 不需這些依賴。執行 /volume1/docker/dotnet-runtime/build.sh
更新映像。
在 MySQL 上建立表格:
/volume1/docker/mywebapp/
。ConnectionStrings__MySQL
Server=<mysql_host>;Database=book_db;User=<user>;Password=<password>
62005
,卷冊映射至 /app
,命令為 dotnet /app/SimpleWeb.dll
。http://<NAS_IP>:62005/Books
,新增書籍並確認資料儲存至 MySQL。MySqlDbContext
映射一致。本文展示了如何在 .NET Core 3.1 應用程式中整合 MySQL 資料庫,與 Oracle 整合相比,MySQL 配置更簡單,無需額外容器依賴。讀者可根據需求選擇適用的資料庫。