網站首頁 編程語言 正文
一、簡要步驟
1、第一步
安裝以下程序包
- 安裝Entity FrameWork Core SqlServer 3.1
- 安裝Entity FrameWork Core Tools 3.1
- 安裝Entity FrameWork Core Design 3.1
2、第二步
選擇默認項目為放Model的項目,在程序包管理控制臺 輸入:
Scaffold-DbContext '數據庫連接字符串' 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
提示:微軟官網提示 Sql Server版本必須在2012以上。
?二、詳細解釋
- 1.反向工程是實體類型類和一個基于數據庫架構的 DbContext 類的基架的過程?
- 2.Scaffold-DbContext(數據庫上下文腳手架)?
使用Scaffold-DbContext(數據庫上下文腳手架)指令生成models和context?
- 3.腳手架:?
編譯器(腳手架)根據程序員制定的規則收成相應的代碼,操作數據庫(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.參數說明:?
[-Connection] <String>:數據庫連接字符串,將使用此連接字符串來讀取數據庫架構。?
[-Provider] <String>:第二個參數是提供程序名稱。提供程序名稱通常是與提供程序的 NuGet 包名稱相同,例如:Pomelo.EntityFrameworkCore.MySql、Microsoft.EntityFrameworkCore.SqlServer?
[-OutputDir <String>]:實體類文件存放的目錄?
[-Context <String>]:創建到一個單獨的目錄從實體類型類的基架的 DbContext 類。?
[-Schemas <String>]:用于包含在架構中的每個表?
[-Tables <String>]:指定表,例如:Scaffold-DbContext ... -Tables Artist, Album?
[-DataAnnotations]:保留名稱,使用原始數據庫名稱,仍將修復無效的.NET 標識符和合成的名稱,如導航屬性仍將遵循.NET 命名約定?
[-Force]:更新模型?
[-Project <String>]:已搭建基架的 DbContext 類名稱將用作后綴的數據庫的名稱上下文默認情況下。 若要指定一個不同,使用-Context?
[-StartupProject <String>]:指定要使用的啟動項目。如果省略,則使用解決方案的啟動項目?
[-Environment <String>]?
[<CommonParameters>]?
- 6.工作原理
反向工程開始時讀取數據庫架構。 它將讀取有關表、 列、 約束和索引的信息。?
接下來,它使用的架構信息創建 EF Core 模型。 使用表來創建實體類型;使用列來創建屬性;和外鍵用于創建關系。?
最后,該模型用于生成代碼。 相應的實體類型的類、 Fluent API 和數據批注已搭建基架以重新創建相同的模型從您的應用程序中。?
- 7.無效情況?
有關的信息繼承層次結構,固有類型,并表拆分數據庫架構中不存在?
些列類型可能不支持通過 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.在程序包包管理器控制臺 中執行以下語句生成 實體類?
--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指令已經可以自動映射數據庫中的視圖為實體。查詢類型表示可從數據庫讀取但無法更新的數據,它已重命名為無鍵實體類型。?
由于它們非常適用于映射多數場景中的數據庫視圖,當執行數據庫視圖反向工程時,EF Core 現在將自動創建無鍵實體類型。
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Names>(entity => { entity.HasNoKey(); entity.ToView("Names"); }); modelBuilder.Entity<Things>(entity => { entity.HasNoKey(); }); }
原文鏈接:https://www.cnblogs.com/springsnow/p/13405231.html
相關推薦
- 2022-11-22 在?React?項目中全量使用?Hooks的方法_React
- 2022-06-09 使用Ajax實現進度條的繪制_AJAX相關
- 2022-12-21 C++強制轉換與智能指針示例詳解_C 語言
- 2022-11-04 C#使用BinaryFormatter類、ISerializable接口、XmlSerializer
- 2022-08-26 Python實現雙向RNN與堆疊的雙向RNN的示例代碼_python
- 2022-11-13 Git如何恢復到之前版本_相關技巧
- 2024-01-30 關閉idea時出現waiting for process detach解決辦法
- 2023-03-28 Python?獲取當前路徑3種方法_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支