概述
Entity Framework (EF) Core 是輕量化、可擴展、開源和跨平台版的常用 Entity Framework 數據訪問技術。
EF Core 可用作對象關系映射程序 (O/RM),以便於 .NET 開發人員能夠使用 .NET 對象來處理數據庫,這樣就不必經常編寫大部分數據訪問代碼了。
EF Core 支持多個數據庫引擎,請參閱數據庫提供程序了解詳細信息。
基於 .NET Core 的 EF Core 入門
在本教程中,將創建一個 .NET Core 控制台應用,該應用使用 Entity Framework Core 對 Microsoft SQL Server 數據庫執行數據訪問。
創建新項目
-
新建控制台項目:
執行 PowerShell 命令
dotnet new console -o ConsoleApp如下圖

更改當前目錄
-
將當前目錄更改為應用程序的目錄,如下所示:
cd ConsoleApp
安裝 Entity Framework Core
-
安裝 Microsoft.EntityFrameworkCore.SqlServer 和 Microsoft.EntityFrameworkCore.Tools
dotnet add package Microsoft.EntityFrameworkCore.SqlServer dotnet add package Microsoft.EntityFrameworkCore.Tools -
運行
dotnet restore來安裝新的程序包。
創建模型
-
使用以下內容創建一個新的 Model.cs 文件。
using Microsoft.EntityFrameworkCore; using System.Collections.Generic; namespace ConsoleApp { 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=你的數據庫地址;Database=ConsoleApp;User Id=你的數據庫賬號;Password=你的數據庫密碼;"); } } public class Blog { public int BlogId { get; set; } public string Url { get; set; } public ICollection<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; } } }在實際應用程序中,應將每個類放在單獨的文件中,並將連接字符串放在配置文件或環境變量中。 為簡化本教程,所有內容均放在一個文件中。
創建數據庫
有了模型后,即可通過遷移創建數據庫。
- 運行
dotnet ef migrations add InitialCreate以為遷移搭建基架,並為模型創建一組初始表。 - 運行
dotnet ef database update以將新遷移應用到數據庫。 在應用遷移之前,此命令可創建數據庫。
使用模型
-
打開 Program.cs 並將內容替換為以下代碼:
using System; namespace ConsoleApp { class Program { static void Main(string[] args) { using (var db = new BloggingContext()) { db.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/adonet" }); var count = db.SaveChanges(); Console.WriteLine("{0} records saved to database", count); Console.WriteLine(); Console.WriteLine("All blogs in database:"); foreach (var blog in db.Blogs) { Console.WriteLine(" - {0}", blog.Url); } } } } } -
運行
dotnet run從控制台測試應用。
基於 ASP.NET Core 的 EF Core 入門
在本教程中,將使用 Entity Framework Core 構建執行基本數據訪問的 ASP.NET Core MVC 應用程序。
創建新項目
-
打開 Visual Studio 2017
-
“文件”>“新建”>“項目”
-
從左菜單中選擇“已安裝”>“Visual C#”>“.NET Core”。
-
選擇“ASP.NET Core Web 應用程序”。
-
輸入“WebApplication”作為名稱,然后單擊“確定”。
-
在“新建 ASP.NET Core Web 應用程序”對話框中:
-
確保在下拉列表中選擇“.NET Core”和“ASP.NET Core 2.1”
-
選擇“Web 應用程序(模型視圖控制器)”項目模板
-
確保將“身份驗證”設置為“無身份驗證”
-
單擊“確定”


安裝 Entity Framework Core
對於本教程,無需安裝提供程序包,因為本教程使用 SQL Server。 SQL Server 提供程序包包含在 Microsoft.AspnetCore.App 元包中。
創建模型
-
右鍵單擊“Models”文件夾,然后選擇“添加”>“類”。
-
輸入“Model.cs”作為名稱,然后單擊“確定”。
-
將此文件的內容替換為以下代碼:
using System.Collections.Generic; using Microsoft.EntityFrameworkCore; namespace WebApplication.Models { public class BloggingContext : DbContext { public BloggingContext(DbContextOptions<BloggingContext> options) : base(options) { } public DbSet<Blog> Blogs { get; set; } public DbSet<Post> Posts { get; set; } } public class Blog { public int BlogId { get; set; } public string Url { get; set; } public ICollection<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; } } }生產應用通常會將每個類放在單獨的文件中。 為簡單起見,本教程將這些類放在一個文件中。
使用依賴注入注冊上下文
若要使 BloggingContext 可用於 MVC 控制器,請在 Startup.cs 中將其注冊為服務。
在應用程序啟動過程中,通過依賴關系注入 注冊服務(如 BloggingContext),以便能夠通過構造函數的參數和屬性向使用服務的組件(如 MVC 控制器)自動提供該服務。
-
在 Startup.cs 中,添加以下 using 語句:
using WebApplication.Models; using Microsoft.EntityFrameworkCore; -
將以下
手動高亮的代碼添加到ConfigureServices方法:public void ConfigureServices(IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); var connection = @"Server=你的數據庫地址;Database=WebApplication;User Id=你的數據庫賬號;Password=你的數據庫密碼;"; // 手動高亮 services.AddDbContext<BloggingContext> // 手動高亮 (options => options.UseSqlServer(connection)); // 手動高亮 }生產應用通常會將連接字符串放在配置文件或環境變量中。 為簡單起見,本教程在代碼中定義它。
創建數據庫
以下步驟使用遷移創建數據庫。
-
“工具”>“NuGet 包管理器”>“包管理器控制台”
-
運行以下命令:
Add-Migration InitialCreate Update-Database如果收到錯誤,指出 The term 'add-migration' is not recognized as the name of a cmdlet,請關閉並重新打開 Visual Studio。
Add-Migration 命令為遷移搭建基架,以便為模型創建一組初始表。 Update-Database 命令創建數據庫並向其應用新的遷移。
創建控制器
生成 Blog 實體控制器和視圖的基架。
-
在“解決方案資源管理器”中,右鍵單擊“Controllers”文件夾,然后選擇“添加”>“控制器”。
-
選擇“視圖使用 Entity Framework 的 MVC 控制器”,然后單擊“添加”。
-
將“模型類”設置為“Blog”,將“數據上下文類”設置為“BloggingContext”。
-
單擊 添加。

運行此應用程序
- 調試 > 開始執行(不調試)
- 導航到 /Blogs
