1. 程式人生 > 其它 >[C#]如何使用Linq查詢MySQL資料庫

[C#]如何使用Linq查詢MySQL資料庫

Entity Framework Core是微軟的開源跨平臺的物件關係對映(O/RM)技術,可以通過直接訪問記憶體物件來完成資料庫的增刪改查等操作,無需編寫SQL語句每次從資料庫中查詢資料了,而且對於C#來說,可以直接用Linq查詢表示式對資料庫進行查詢,可以說是快樂加倍了。
EF Core使用模型執行資料訪問,模型是由實體類和表示資料庫會話的上下文物件構成,實體類是指資料庫中的一個表對映成的一個C#類,比如下圖中右側是city表的資料庫邏輯結構,左側是該表對映成的C#類,而表中的每一條資訊都會對映成一個該型別的物件,從而可以操縱這些物件來完成對資料庫資訊的讀寫

而“表示資料庫會話的上下文物件”是指,將要訪問的資料庫對映為一個DbContext

型別的物件,以官方文件中的程式碼為例:

using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;

namespace Intro;

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(
            @"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True");
    }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
    public int Rating { get; set; }
    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

BlogPost是兩個實體類,分別對應資料庫中的兩張表的結構,而BloggingContext用來完成對資料庫的配置,兩個DbSet<T>的集合分別儲存兩張表的所有資訊(所對映成的物件),重寫OnConfiguring()方法完成資料庫的連線,使用時只需要例項化一個BloggingContext物件即可:

//查詢
using (var db = new BloggingContext())
{
    var blogs = db.Blogs
        .Where(b => b.Rating > 3)
        .OrderBy(b => b.Url)
        .ToList();
}

//儲存資料
using (var db = new BloggingContext())
{
    var blog = new Blog { Url = "http://sample.com" };
    db.Blogs.Add(blog);
    db.SaveChanges();
}