iT邦幫忙

2022 iThome 鐵人賽

DAY 11
0
Modern Web

.NET教我做人系列 第 11

Day11 .NET 與資料庫的連結

  • 分享至 

  • xImage
  •  

昨天我們快速的講完 nuget 套件後,應該對基本的安裝、刪除的操作不陌生,今天的話我們就會來使用nuget 提供的套件來做練習。我們在開發一個專案時,對資料做處理是不可避免的事,想必大家不是第一次寫專案的人一定對資料庫不陌生,資料庫的使用是很常見的,所以今天的話我們就是要來運用nuget上特定的套件來連到我們的資料庫,在 .net 開發中基本上可以分成兩大類「DB-First」和「Code-First」,所以天我也會使用這兩種方式來做練習

首先,我們先去架設我們自己要的資料庫,這裡我是使用 MySQL 來架我的資料庫,由於這裡主要是介紹資料庫的連結,所以架資料庫的動作我就不再多介紹,建議如果不想太麻煩可以使用 Docker 來架自己的資料庫,大家都可以到 Docker Hub 找自己要用的image 例如:MySQL-IMAGE,官網通常都介紹裡面有哪些需要設定的地方

特別講一下,如果使用Visual Studio開發專案的話,軟體會預設開啟SQL Server的資料庫,所以是要用SQL Server的人就不用自己去架設資料庫

需要套件

  • Microsoft.EntityFrameworkCore.Tools
  • Pomelo.EntityFrameworkCore.MySql

DB-First

DB-First顧名思義就是我們會先透過資料庫管理系統設計好我們的資料表後,再透過nuget 特定的套件來做連結

使用Studio的套件管理員主控台

先開啟Studio裡的檢視>其他視窗>套件管理器主控台,就會出現以下畫面

輸入連結指令

Scaffold-DbContext "ConnectionString" DatabaseProvider -OutputDir Models

ConnectString

Server=localhost;Port=13306;Database=demo-sql;UserID=root;Password=rootroot

Scaffold-DbContext Server=localhost;Port=13306;Database=demo-sql;UserID=root;Password=rootroot Pomelo.EntityFrameworkCore.MySql -o Models -f

使用dotnet CLI

首先我們先安裝dotnet ef

dotnet tool install --global dotnet-ef

再來輸入指令

dotnet ef "ConnectionString" DatabaseProvider -OutputDir Models

需要調整部分

輸入完後應該就會有Models的資料夾出現,再來我們看看Models裡會有demosqlContext.cs新增的檔案,裡面應該會出現有一段訊息,這裡是我們需要做些更動,會讓我們在執行專案時不用一直做設定

新增資料庫的連結資訊在application.json

Program.cs新增連接資料庫的設定

最後把demosqlContext.cswarning內容刪掉就完成了

這裡主要的重點是在使用資料庫管理系統的設定,但是說實在身為工程師怎麼可能不寫code,所以Code-First的方次才是大部分人常使用的,那接下來我就來介紹Code-Frirs到底是甚麼吧

Code-First

Code-First其時也很好理解,就是我們先在專案下把資料庫需要的相關設定寫好後,再透過指令把資料表寫起來。這裡我會用比較偷懶的方式,先用DB-First把我們的連接設定起來,再新增資料表需要的檔案

先在 Models 裡新增一個User.cs,裡面要先些資料表裡面相關的設定

using System.ComponentModel.DataAnnotations;           
using System.ComponentModel.DataAnnotations.Schema;
# 相關模組的引用

namespace demo.Models
{
    [Table("User")]                                       # 資料表的命名
    public class User
    {
        [Key]                                             # primary key
        [Column("StudentId")]                             # 欄位名稱
        public int Id { get; set; }

        [Required]                                        # 必要欄位
        [MinLength(4)]                                    # 最小長度
        public string Name { get; set; }

        [Required]
        [EmailAddress]                                    # email的格式
        public string Email { get; set; }
        [Required]
        [MaxLength(30)]                                   # 最大長度
        public string Password { get; set; }

        [DisplayFormat(DataFormatString ="{yyyy-MM-dd}")] # 特定字串格式
        public DateTime Birthday { get; set; }
    }
}

資料表新增

Studio

在剛剛套件管理器主控台的地方輸入

Add-Migration init

執行完後應該會產生Migration的資料夾,會有一個demosqlContextModelSnapshot.cs的檔,這就是產資料表必要的東西

再來產生資料表

Update-Database

到這裡就新增成功,只要到資料庫管理系統看有沒有新增成功就好

dotnet CLI

用dotnet CLI 產生資料表的操作其實差不多,這裡我就只介紹指令就好

產生migration

dotnet ef migrations add init

資料表產生

dotnet ef database update

那如果有想知道更多有關產資料表的內容可以到 link 去找更詳細的介紹,那麼今天的鐵人賽我就介紹到這裡,大家明天建拉~~~


上一篇
Day10 NuGet是我們的好捧友
下一篇
Day12 經過都需要Middleware的同意
系列文
.NET教我做人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言