.Net Core中使用EFCore生成反向工程
一、簡要步驟
1、第一步
安裝以下程序包
- 安裝Entity FrameWork Core SqlServer 3.1
- 安裝Entity FrameWork Core Tools 3.1
- 安裝Entity FrameWork Core Design 3.1
2、第二步
選擇默認項目為放Model的項目,在程序包管理控制臺 輸入:
Scaffold-DbContext '數(shù)據(jù)庫連接字符串' Microsoft.EntityFrameworkCore.SqlServer -o Model -v
- -o :表示輸出到xxx Model是生成文件以后所在的文件夾的名字,也可以用''代替會直接生成到項目的根目錄。
- -v: 表示顯示錯誤信息
- -Force :更新表
- -Tables 表名 :只操作某張表
- -Context :Context類名
示例:自動生成MainDB的Context類和UserInfo實體類。
Scaffold-DbContext 'Data Source=.;Initial Catalog=MyDB;User ID=sa;Password=sa123' Microsoft.EntityFrameworkCore.SqlServer -o '' -Tables UserInfo -Force -Context MainDB -v
提示:微軟官網(wǎng)提示 Sql Server版本必須在2012以上。

二、詳細解釋
- 1.反向工程是實體類型類和一個基于數(shù)據(jù)庫架構(gòu)的 DbContext 類的基架的過程
- 2.Scaffold-DbContext(數(shù)據(jù)庫上下文腳手架)
使用Scaffold-DbContext(數(shù)據(jù)庫上下文腳手架)指令生成models和context
- 3.腳手架:
編譯器(腳手架)根據(jù)程序員制定的規(guī)則收成相應的代碼,操作數(shù)據(jù)庫(CRUD)
- 4.語法:
Scaffold-DbContext [-Connection] <String> [-Provider] <String> [-OutputDir <String>] [-Context <String>]
[-Schemas <String>] [-Tables <String>] [-DataAnnotations] [-Force] [-Project <String>]
[-StartupProject <String>] [-Environment <String>] [<CommonParameters>]
- 5.參數(shù)說明:
[-Connection] <String>:數(shù)據(jù)庫連接字符串,將使用此連接字符串來讀取數(shù)據(jù)庫架構(gòu)。
[-Provider] <String>:第二個參數(shù)是提供程序名稱。提供程序名稱通常是與提供程序的 NuGet 包名稱相同,例如:Pomelo.EntityFrameworkCore.MySql、Microsoft.EntityFrameworkCore.SqlServer
[-OutputDir <String>]:實體類文件存放的目錄
[-Context <String>]:創(chuàng)建到一個單獨的目錄從實體類型類的基架的 DbContext 類。
[-Schemas <String>]:用于包含在架構(gòu)中的每個表
[-Tables <String>]:指定表,例如:Scaffold-DbContext ... -Tables Artist, Album
[-DataAnnotations]:保留名稱,使用原始數(shù)據(jù)庫名稱,仍將修復無效的.NET 標識符和合成的名稱,如導航屬性仍將遵循.NET 命名約定
[-Force]:更新模型
[-Project <String>]:已搭建基架的 DbContext 類名稱將用作后綴的數(shù)據(jù)庫的名稱上下文默認情況下。 若要指定一個不同,使用-Context
[-StartupProject <String>]:指定要使用的啟動項目。如果省略,則使用解決方案的啟動項目
[-Environment <String>]
[<CommonParameters>]
- 6.工作原理
反向工程開始時讀取數(shù)據(jù)庫架構(gòu)。 它將讀取有關(guān)表、 列、 約束和索引的信息。
接下來,它使用的架構(gòu)信息創(chuàng)建 EF Core 模型。 使用表來創(chuàng)建實體類型;使用列來創(chuàng)建屬性;和外鍵用于創(chuàng)建關(guān)系。
最后,該模型用于生成代碼。 相應的實體類型的類、 Fluent API 和數(shù)據(jù)批注已搭建基架以重新創(chuàng)建相同的模型從您的應用程序中。
- 7.無效情況
有關(guān)的信息繼承層次結(jié)構(gòu),固有類型,并表拆分數(shù)據(jù)庫架構(gòu)中不存在
些列類型可能不支持通過 EF Core 提供程序
表沒有主鍵是當前不實施反向工程。
- 8.安裝程序集
--MySQL版本:
MySql.Data.EntityFrameworkCore
Pomelo.EntityFrameworkCore.MySql
Microsoft.EntityFrameworkCore.Tools
Microsoft.VisualStudio.Web.CodeGeneration.Design
--SQLService版本:
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
Microsoft.VisualStudio.Web.CodeGeneration.Design
- 9.在程序包包管理器控制臺 中執(zhí)行以下語句生成 實體類
--MySQL版本:
第一次生成實體類: Scaffold-DbContext "Server=127.0.0.1;port=3306;Database=db; User=root;Password=root;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models
更新實體類:
Scaffold-DbContext "Server=127.0.0.1;port=3306;Database=db; User=root;Password=root;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Force
--SQLService版本:
第一次生成實體: Scaffold-DbContext "Server=127.0.0.1;port=3306;Database=db; User=root;Password=root;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
更新實體類: Scaffold-DbContext "Server=127.0.0.1;port=3306;Database=db; User=root;Password=root;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force
注意:
在EF Core 3.0及以上Scaffold-DbContext指令已經(jīng)可以自動映射數(shù)據(jù)庫中的視圖為實體。查詢類型表示可從數(shù)據(jù)庫讀取但無法更新的數(shù)據(jù),它已重命名為無鍵實體類型。
由于它們非常適用于映射多數(shù)場景中的數(shù)據(jù)庫視圖,當執(zhí)行數(shù)據(jù)庫視圖反向工程時,EF Core 現(xiàn)在將自動創(chuàng)建無鍵實體類型。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Names>(entity =>
{
entity.HasNoKey();
entity.ToView("Names");
});
modelBuilder.Entity<Things>(entity =>
{
entity.HasNoKey();
});
}到此這篇關(guān)于.Net Core中使用EFCore生成反向工程的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- .net如何優(yōu)雅的使用EFCore實例詳解
- ASP.NET?Core?5.0中的Host.CreateDefaultBuilder執(zhí)行過程解析
- ASP.NET Core使用EF保存數(shù)據(jù)、級聯(lián)刪除和事務使用
- ASP.NET?Core使用EF查詢數(shù)據(jù)
- ASP.NET?Core使用EF創(chuàng)建模型(索引、備用鍵、繼承、支持字段)
- ASP.NET?Core使用EF?SQLite對數(shù)據(jù)庫增刪改查
- .net core實用技巧——將EF Core生成的SQL語句顯示在控制臺中
- 詳解.Net Core 權(quán)限驗證與授權(quán)(AuthorizeFilter、ActionFilterAttribute)
- 在.NET Core類庫中使用EF Core遷移數(shù)據(jù)庫到SQL Server的方法
- .net連接oracle的3種實現(xiàn)方法
- C#利用ODP.net連接Oracle數(shù)據(jù)庫的操作方法
- .Net使用EF Core框架連接Oracle的方法
相關(guān)文章
.net開發(fā)中幾個重要的認識誤區(qū)小結(jié)
.net如今已經(jīng)很流行,成為趕時髦的程序員的首選。但是,大量剛剛接觸.net的程序員的確存在一定的認識誤區(qū),這里先介紹一部分。2010-04-04
ASP.NET Core利用Jaeger實現(xiàn)分布式追蹤詳解
這篇文章主要給大家介紹了關(guān)于ASP.NET Core利用Jaeger實現(xiàn)分布式追蹤的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用ASP.NET Core具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-04-04
通過HttpClient 調(diào)用ASP.NET Web API示例
本篇文章主要介紹了通過HttpClient 調(diào)用ASP.NET Web API示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
.NET?Core?GC壓縮(compact_phase)底層原理解析
GC的最后一個步驟,分為清除和壓縮兩種情況,清除操作將不可到達對象轉(zhuǎn)換為Free,而壓縮操作涉及復制對象并移動到新位置,更新所有引用,并重新劃分代邊界,本文介紹.NET Core GC壓縮原理解析,感興趣的朋友一起看看吧2025-01-01
asp.net 數(shù)據(jù)訪問層 存儲過程分頁語句
在asp.net 網(wǎng)頁中如果在業(yè)務邏輯層分頁在使用PagedDataSource對象,但如果數(shù)據(jù)記錄過多,使用它會嚴重的損害應用程序的性能.2009-12-12
.NET MVC中ViewData,ViewBag和TempData的區(qū)別淺析
這篇文章主要介紹了.NET MVC中ViewData,ViewBag和TempData的區(qū)別,分析了ViewData,ViewBag和TempData在賦值、功能特性等方面的區(qū)別于用法,具有一定參考借鑒價值,需要的朋友可以參考下2015-01-01

