一、什么是 Entity Framework (EF) Core
Entity Framework (EF) Core 是輕量化、可擴展和跨平台版的對象關系映射程序 (O/RM)數據訪問技術,。 它將開發人員從編寫大量 SQL 語句中解放出來。
二、EF的相關程序包
Microsoft.EntityFrameworkCore 核心程序包,封裝了關鍵的核心代碼,使用EF必須引用這個包
Microsoft.EntityFrameworkCore.Design 設計包,用於在命令行工具下EF Core開發的工具套件
Microsoft.EntityFrameworkCore.Tools 用於數據庫的生成、遷移、生成表等
三、EF Core支持的數據庫引擎:SqlServer、Sqlite、PostgreSQL、MySql、Oracle等主流數據庫,不同的數據庫需要EF Core數據庫提供程序支持。
微軟維護的數據庫程序包
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Sqlite
Microsoft.EntityFrameworkCore.InMemory
Microsoft.EntityFrameworkCore.Cosmos
四、使用流程
1、在項目里添加安裝數據庫程序包,我這里使用MySql數據庫,管理Nuget程序包添加Microsoft.EntityFrameworkCore.Design、Pomelo.EntityFrameworkCore.MySql的引用后已經包含了Microsoft.EntityFrameworkCore的相關依賴
2、創建數據庫實體映射類
public class Blog { public int BlogId { get; set; } public string Url { get; set; } public List<Post> Posts { get; } = new List<Post>(); }
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; } }
3、新建一個繼承DbContext的類作用是配置數據連接、操作數據庫表等信息
public class BloggingContext: DbContext { /// <summary> /// Blogs表的操作屬性 /// </summary> public DbSet<Blog> Blogs { get; set; } /// <summary> /// Posts /// </summary> public DbSet<Post> Posts { get; set; } /// <summary> /// 配置數據連接信息 /// </summary> /// <param name="optionsBuilder"></param> protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySql("你的數據庫連接字符串"); base.OnConfiguring(optionsBuilder); } }
4、添加數據庫遷移文件:程序包管理控制台輸入:
Add-Migration InitialCreate //InitialCreate是生成遷移文件的文件名,執行此命令后,會生成Migrations文件夾及相關的遷移文件
Update-Database //生成數據庫
5、數據庫:增、讀、刪、改操作
using (var db = new BloggingContext()) { // Create Console.WriteLine("Inserting a new blog"); db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" }); db.SaveChanges(); // Read Console.WriteLine("Querying for a blog"); var blog = db.Blogs .OrderBy(b => b.BlogId) .First(); // Update Console.WriteLine("Updating the blog and adding a post"); blog.Url = "https://devblogs.microsoft.com/dotnet"; blog.Posts.Add( new Post { Title = "Hello World", Content = "I wrote an app using EF Core!" }); db.SaveChanges(); // Delete Console.WriteLine("Delete the blog"); db.Remove(blog); db.SaveChanges(); }