網站首頁 編程語言 正文
一、引言
生成數據庫表有下面的三種方式:
- 代碼生成。
- 程序包管理器控制臺遷移。
- 命令行遷移。
下面分別介紹上面的三種方法。
二、具體示例
1、代碼生成
在程序里面執行下面的代碼可以在運行時生成數據庫:
dbContext.Database.EnsureCreated()
其中dbContext是數據上下文的實例對象。看下面的代碼:
using EFCore.Data; using System; namespace EFCore.Con { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); // 實例化數據上下文對象 EFDbContext dbContext = new EFDbContext(); // 生成數據庫 bool tfTrue = dbContext.Database.EnsureCreated(); if (tfTrue) { Console.WriteLine("數據庫創建成功!"); } else { Console.WriteLine("數據庫創建失敗!"); } Console.ReadKey(); } } }
運行程序,查看效果:
提示創建成功,我們去數據庫查看,發現會自動創建數據庫,并且添加了表:
這種方式只能執行一次,如果再次執行,就會提示創建數據庫失敗。
2、程序包管理器控制臺遷移
使用程序包管理器控制臺遷移的方式分為三個步驟。
1、安裝Microsoft.EntityFrameworkCore.Tools包
由于遷移需要使用到Microsoft.EntityFrameworkCore.Tools包,所以先要在EFCore.Data類庫項目上安裝這個包,直接在NuGet里面安裝即可。
這里是把EFCore安裝在一個單獨的類庫項目里,所以作為啟動項的控制臺程序也要安裝這個包。
2、添加遷移命令
使用下面的命令可以生成一個遷移:
Add-Migration Init_First
其中Init_First是為這次遷移起的一個名稱,如下圖所示:
執行完遷移命令以后,會自動生成幾個文件:
- 20200224163036_Init_First.cs:是針對本次遷移生成的文件。每次遷移都會生成一個對應的遷移文件。里面有一個Up方法和一個Down方法,Up方法表示要執行的操作,Down方法相當于回滾,如果需要還原到上一個狀態,就會執行Down方法。
- EFDbContextModelSnapshot.cs:生成的配置文件。只會生成一次。
3、更新數據庫
執行完上面的遷移命令,執行下面的命令就可以更新到數據庫:
Update-Database
如下圖所示:
這樣就會自動生成數據庫。
3、命令行遷移
我們可以在PowerShell或者CMD命令行窗口里面進行遷移,使用命令行遷移分為下面的兩個步驟。
1、添加遷移
首先我們要進入EFCore.Data目錄下面,然后執行下面的命令添加遷移:
dotnet ef migrations add Initial
如下圖所示:
遷移之后同樣會生成上面所講的文件。?
2、更新數據庫
執行下面的命令會將配置更新到數據庫:
dotnet ef database update
如下圖所示:
執行成功以后就會生成數據庫。
三、總結
上面介紹了三種生成數據庫表的方式,代碼生成的方式適合于控制臺程序,這種方式不太常用。尤其是在Web項目里面,經常使用第二種和第三種方式。
原文鏈接:https://www.cnblogs.com/dotnet261010/p/12359767.html
相關推薦
- 2022-05-11 C#對集合進行排序_C#教程
- 2021-12-04 Qt下監測內存泄漏的方法_C 語言
- 2022-04-28 Python中turtle.write方法使用說明_python
- 2023-04-27 React中使用Axios發起POST請求提交文件方式_React
- 2022-04-01 containerd常用命令
- 2022-10-18 ASP.NET?MVC增加一條記錄同時添加N條集合屬性所對應的個體_實用技巧
- 2023-01-02 Oracle中sql語句如何執行日志查詢_MsSql
- 2022-09-21 Python腳本開發中的命令行參數及傳參示例詳解_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同步修改后的遠程分支