[C#]如何使用Linq查詢MySQL資料庫
阿新 • • 發佈:2022-03-15
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; } }
Blog
和Post
是兩個實體類,分別對應資料庫中的兩張表的結構,而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(); }