文章

第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() 方法按姓名進行排序。結果以列表形式返回,並逐一輸出。


實作練習

  1. 建立學生記錄
    • 新增一位名為 “Alice” 的學生,年齡為 21。
  2. 讀取所有學生
    • 從資料庫中讀取所有學生,並輸出其姓名和年齡。
  3. 更新學生年齡
    • 將名為 “Alice” 的學生年齡修改為 22。
  4. 刪除學生記錄
    • 刪除名為 “Alice” 的學生。
  5. 查詢學生
    • 使用 LINQ 查詢年齡大於 20 的學生,並按年齡排序輸出。

教學重點

  • 學會使用 Entity Framework 進行基本的資料庫 CRUD 操作。
  • 使用 LINQ 查詢和篩選資料。
  • 掌握如何在 C# 中與資料庫進行互動。

在下一節中,我們將學習 進階資料庫操作,例如處理多對多關係、Lazy Loading 和 Eager Loading。

本文章以 CC BY 4.0 授權