一、什么是 Entity Framework (EF) Core
Entity Framework (EF) Core 是輕量化、可擴展和跨平臺版的對象關系映射程序 (O/RM)數據訪問技術,。 它將開發人員從編寫大量 SQL 語句中解放出來。
二、EF的相關程序包
Microsoft.EntityFrameworkCore 核心程序包,封裝了關鍵的核心代碼,使用EF必須引用這個包
Microsoft.EntityFrameworkCore.Design 設計包,用于在命令行工具下EF Core開發的工具套件
Microsoft.EntityFrameworkCore.Tools 用于數據庫的生成、遷移、生成表等
在 PMC 中安裝 Microsoft.EntityFrameworkCore.Tools?包,再次執行就可以了。
Install-Package Microsoft.EntityFrameworkCore.Tools
問題產生原因:
ASP.NET Core 2.1以上的版本中,Microsoft.EntityFrameworkCore.Tools包包含在Microsoft.AspNetCore.App 元包。
而?ASP.NET Core 2.1 以下的版本中需要手動引用?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、配置EF Core
在項目中使用EF Core,需要在Startup.cs
中配置服務,并在DbContext
中定義數據上下文。
// 配置EF Core服務
public void ConfigureServices(IServiceCollection services)
{services.AddDbContext<ApplicationDbContext>(options =>options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
5、添加數據庫遷移文件:啟動程序包管理控制臺,輸入以下命令就行,自己到數據庫查看結果是否成功
1.Add-Migration initialCreate
2.Update-database
在.NET Core項目中,使用Entity Framework Core進行數據庫遷移時,Add-Migration 命令是用來創建一個新的遷移文件的。當你想要初始化數據庫架構時,可以使用 InitialCreate 作為遷移名稱。以下是如何使用這個命令的步驟:1. 打開命令行界面
首先,打開你的命令行界面(例如:命令提示符、PowerShell、或者終端)。2. 導航到項目目錄
使用 cd 命令導航到你的.NET Core項目的根目錄。例如:cd path\to\your\project
3. 使用 Add-Migration 命令
在項目目錄下,運行以下命令來創建一個名為 InitialCreate 的遷移。確保你的項目是.NET Core項目,并且已經安裝了Entity Framework Core工具。dotnet ef migrations add InitialCreate
這條命令會生成一個新的遷移文件,通常位于 Migrations 文件夾下,文件名類似于 [日期時間]InitialCreate.cs。這個文件包含了創建數據庫所需的所有操作。4. 查看遷移文件
生成的遷移文件將包含一系列的 Up 和 Down 方法,分別用于應用和撤銷遷移。例如:protected override void Up(MigrationBuilder migrationBuilder)
{migrationBuilder.CreateTable(name: "YourTableName",columns: table => new{// 列定義},constraints: table =>{// 約束定義});
}protected override void Down(MigrationBuilder migrationBuilder)
{migrationBuilder.DropTable(name: "YourTableName");
}
5. 應用遷移到數據庫
創建遷移后,你可以使用以下命令將遷移應用到數據庫:dotnet ef database update
這將會根據遷移文件中的指令來創建或更新數據庫架構。
6、數據庫:增、讀、刪、改操作
using (var db = new BloggingContext()){// CreateConsole.WriteLine("Inserting a new blog");db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });db.SaveChanges();// ReadConsole.WriteLine("Querying for a blog");var blog = db.Blogs.OrderBy(b => b.BlogId).First();// UpdateConsole.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();// DeleteConsole.WriteLine("Delete the blog");db.Remove(blog);db.SaveChanges();}