第17天:資料庫基本操作
課程簡介
今天,我們將專注於 資料庫的基本操作,包括如何使用 C# 和 Entity Framework 進行資料的建立、讀取、更新和刪除(CRUD)。透過這些操作,您可以掌握資料庫與應用程式之間的基礎互動方法,並能夠將應用程式中的資料儲存到資料庫中,或者從資料庫中提取資料進行顯示或處理。
學習目標
- 了解如何建立、讀取、更新和刪除資料庫中的記錄
- 學習如何使用 Entity Framework Core 進行基本的資料庫操作
- 使用 LINQ 語法對資料進行查詢與篩選
課程內容
1. 建立資料(Create)
新增資料是一個基本的資料庫操作,使用 Entity Framework Core,我們可以非常輕鬆地將資料插入到資料表中。以下範例展示如何將學生資料新增到資料庫中。
範例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using (var context = new SchoolContext())
{
var student = new Student
{
Name = "Bob",
Age = 19,
EnrollmentDate = DateTime.Now
};
// 新增學生到資料集
context.Students.Add(student);
// 儲存變更
context.SaveChanges();
}
在這個範例中,我們建立了一個新的 Student
物件,並使用 Add()
方法將其加入到 Students
資料集中。最後,使用 SaveChanges()
方法將新增的記錄寫入資料庫。
2. 讀取資料(Read)
讀取資料是應用程式中常見的操作,通常是從資料庫中提取某些資料來顯示或進行其他處理。以下範例展示如何讀取學生資料。
讀取所有學生記錄:
1
2
3
4
5
6
7
8
9
using (var context = new SchoolContext())
{
var students = context.Students.ToList();
foreach (var student in students)
{
Console.WriteLine($"姓名: {student.Name}, 年齡: {student.Age}");
}
}
在這個範例中,ToList()
方法將 Students
資料表中的所有記錄讀取並轉換為列表,然後透過 foreach
迴圈輸出每個學生的姓名與年齡。
讀取單筆記錄:
1
2
3
4
5
6
7
8
9
10
11
12
13
using (var context = new SchoolContext())
{
var student = context.Students.FirstOrDefault(s => s.Name == "Bob");
if (student != null)
{
Console.WriteLine($"找到學生:{student.Name}, 年齡: {student.Age}");
}
else
{
Console.WriteLine("找不到該學生。");
}
}
此範例使用 FirstOrDefault()
方法來查詢第一個姓名為 “Bob” 的學生,並輸出其資訊。如果未找到,則輸出找不到該學生的訊息。
3. 更新資料(Update)
資料更新是指修改資料表中的現有記錄。以下範例展示如何更新資料庫中學生的資料。
範例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using (var context = new SchoolContext())
{
var student = context.Students.FirstOrDefault(s => s.Name == "Bob");
if (student != null)
{
// 修改學生的年齡
student.Age = 20;
// 儲存變更
context.SaveChanges();
Console.WriteLine("學生年齡已更新。");
}
else
{
Console.WriteLine("找不到該學生。");
}
}
在此範例中,我們先查詢出名為 “Bob” 的學生,然後修改其年齡屬性,最後使用 SaveChanges()
方法將更新的資料儲存回資料庫。
4. 刪除資料(Delete)
刪除資料是指移除資料表中的某一記錄。以下範例展示如何刪除學生資料。
範例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using (var context = new SchoolContext())
{
var student = context.Students.FirstOrDefault(s => s.Name == "Bob");
if (student != null)
{
// 刪除學生記錄
context.Students.Remove(student);
// 儲存變更
context.SaveChanges();
Console.WriteLine("學生資料已刪除。");
}
else
{
Console.WriteLine("找不到該學生。");
}
}
在此範例中,我們查詢出要刪除的學生,並使用 Remove()
方法將其從資料集中移除,然後使用 SaveChanges()
儲存變更。
5. 使用 LINQ 查詢資料
LINQ 提供了強大的資料查詢功能,使我們可以用簡單的語法來篩選和處理資料。這裡展示如何使用 LINQ 查詢年齡大於 18 歲的學生。
範例:
1
2
3
4
5
6
7
8
9
10
11
12
using (var context = new SchoolContext())
{
var adultStudents = context.Students
.Where(s => s.Age > 18)
.OrderBy(s => s.Name)
.ToList();
foreach (var student in adultStudents)
{
Console.WriteLine($"姓名: {student.Name}, 年齡: {student.Age}");
}
}
此範例使用 Where()
方法來篩選年齡大於 18 歲的學生,並使用 OrderBy()
方法按姓名進行排序。結果以列表形式返回,並逐一輸出。
實作練習
- 建立學生記錄
- 新增一位名為 “Alice” 的學生,年齡為 21。
- 讀取所有學生
- 從資料庫中讀取所有學生,並輸出其姓名和年齡。
- 更新學生年齡
- 將名為 “Alice” 的學生年齡修改為 22。
- 刪除學生記錄
- 刪除名為 “Alice” 的學生。
- 查詢學生
- 使用 LINQ 查詢年齡大於 20 的學生,並按年齡排序輸出。
教學重點
- 學會使用 Entity Framework 進行基本的資料庫 CRUD 操作。
- 使用 LINQ 查詢和篩選資料。
- 掌握如何在 C# 中與資料庫進行互動。
在下一節中,我們將學習 進階資料庫操作,例如處理多對多關係、Lazy Loading 和 Eager Loading。