【C#進階】LINQ和資料庫操作_2024-06-22

StarYou發表於2024-06-22

當我們踏入現代軟體開發的世界,高效地管理和運算元據成為了程式設計的核心技能之一。

讓我們一步步來,用最直白的語言講解這些與資料庫操作和LINQ相關的知識點。

LINQ and 資料庫操作

LINQ(Language Integrated Query,語言整合查詢)是C#中一種強大而靈活的查詢技術,它允許你以統一的方式查詢多種資料來源,包括記憶體中的集合、資料庫等。

LINQ to Objects

想象一下,你有一堆蘋果,你想找出其中紅色的蘋果。在C#中,這堆蘋果可以是一個列表(List),LINQ to Objects就是用來快速查詢、過濾這些列表中的資料的。

using System.Linq;

List<string> apples = new List<string> { "綠色", "紅色", "紅色", "黃色" };

// 使用LINQ從列表中篩選出紅色的蘋果
var redApples = apples.Where(apple => apple == "紅色");

foreach (var apple in redApples)
{
    Console.WriteLine(apple); // 輸出紅色的蘋果
}
  • Where就像是你說的條件:“給我所有滿足這個條件的蘋果”。
  • apple => apple == "紅色" 是一個lambda表示式,意思是“對於每一個蘋果,檢查它是否等於‘紅色’”。

LINQ to SQL 和 Entity Framework 基礎

LINQ to SQL:這就像你有一個魔法翻譯器,可以直接把你的C#程式碼(LINQ查詢)翻譯成SQL語言,和資料庫對話。它讓你可以用熟悉的C#語法來運算元據庫。

// 假設已經設定了資料庫連線和對映
DataContext db = new DataContext(@"your_connection_string");

// 查詢資料庫中所有的紅色蘋果
var query = from apple in db.Apples
            where apple.Color == "紅色"
            select apple;

foreach (var apple in query)
{
    Console.WriteLine(apple.Name);
}
  • DataContext是連線資料庫的橋樑。
  • 上面的程式碼看起來像是SQL,但實際上它是LINQ查詢,會被轉換成SQL執行。

Entity Framework (EF):這是LINQ to SQL的一個升級版,提供了更強大的資料庫互動能力,支援更多的資料庫型別,以及更復雜的ORM(物件關係對映)功能。你可以把EF想象成一個高階的資料庫助手,幫你管理資料庫表和C#物件之間的關係。

using (var context = new YourDbContext())
{
    // 查詢紅色蘋果
    var redApples = context.Apples.Where(a => a.Color == "紅色").ToList();
    
    foreach (var apple in redApples)
    {
        Console.WriteLine(apple.Name);
    }
}
  • YourDbContext是繼承自DbContext的類,包含了資料庫上下文資訊。
  • ToList()執行查詢並將結果載入到記憶體中。

使用ADO.NET訪問資料庫

ADO.NET是更底層的資料庫訪問方式,它不像LINQ那樣優雅,但提供了更細粒度的控制。

想象你直接打電話給廚房(資料庫)下單,而不是透過服務員(LINQ/EF)。

string connectionString = @"your_connection_string";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    
    string sql = "SELECT * FROM Apples WHERE Color = '紅色'";
    
    SqlCommand command = new SqlCommand(sql, connection);
    
    SqlDataReader reader = command.ExecuteReader();
    
    while (reader.Read())
    {
        Console.WriteLine(reader["Name"]);
    }
    
    reader.Close();
}
  • SqlConnection用來建立到資料庫的連線。
  • SqlCommand用來準備SQL命令。
  • SqlDataReader逐行讀取查詢結果。

以上就是關於LINQ和資料庫操作的基礎知識。

總結一下:

  1. LINQ to Objects:這是一種利用LINQ查詢語法直接在記憶體中的集合(如列表、陣列)上執行查詢的強大技術。它簡化了資料過濾、排序和轉換的過程,使得程式碼更加清晰和簡潔。

  2. LINQ to SQL:作為一種ORM(物件關係對映)技術,LINQ to SQL允許你用接近自然語言的C#程式碼編寫SQL查詢,自動處理資料庫互動的細節,減少了手動編寫SQL語句和資料對映的工作量。

  3. Entity Framework (EF):作為LINQ to SQL的進化版本,Entity Framework提供了更為豐富和靈活的功能,支援更多的資料庫型別,以及高階的對映配置和資料庫遷移功能。它進一步抽象化了資料訪問層,使開發者能以物件導向的方式運算元據庫。

  4. ADO.NET:作為.NET平臺下經典的資料庫訪問技術,ADO.NET提供了直接與資料庫互動的基礎構建塊,包括連線資料庫、執行命令和處理資料。雖然相比LINQ和EF更為底層,但在需要高度定製化資料庫操作的場景下,ADO.NET依然展現出了其靈活性和控制力。

透過這些技術的學習,你將能夠以更高效、安全且物件導向的方式處理應用程式中的資料,無論是處理簡單的記憶體集合,還是與複雜的資料庫系統互動。掌握它們,無疑會極大提升你的開發效率和程式碼質量。

相關文章