Entity?Framework?Core生成數(shù)據(jù)庫(kù)表
一、引言
生成數(shù)據(jù)庫(kù)表有下面的三種方式:
- 代碼生成。
- 程序包管理器控制臺(tái)遷移。
- 命令行遷移。
下面分別介紹上面的三種方法。
二、具體示例
1、代碼生成
在程序里面執(zhí)行下面的代碼可以在運(yùn)行時(shí)生成數(shù)據(jù)庫(kù):
dbContext.Database.EnsureCreated()
其中dbContext是數(shù)據(jù)上下文的實(shí)例對(duì)象??聪旅娴拇a:
using EFCore.Data;
using System;
namespace EFCore.Con
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
// 實(shí)例化數(shù)據(jù)上下文對(duì)象
EFDbContext dbContext = new EFDbContext();
// 生成數(shù)據(jù)庫(kù)
bool tfTrue = dbContext.Database.EnsureCreated();
if (tfTrue)
{
Console.WriteLine("數(shù)據(jù)庫(kù)創(chuàng)建成功!");
}
else
{
Console.WriteLine("數(shù)據(jù)庫(kù)創(chuàng)建失敗!");
}
Console.ReadKey();
}
}
}運(yùn)行程序,查看效果:

提示創(chuàng)建成功,我們?nèi)?shù)據(jù)庫(kù)查看,發(fā)現(xiàn)會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù),并且添加了表:

這種方式只能執(zhí)行一次,如果再次執(zhí)行,就會(huì)提示創(chuàng)建數(shù)據(jù)庫(kù)失敗。
2、程序包管理器控制臺(tái)遷移
使用程序包管理器控制臺(tái)遷移的方式分為三個(gè)步驟。
1、安裝Microsoft.EntityFrameworkCore.Tools包
由于遷移需要使用到Microsoft.EntityFrameworkCore.Tools包,所以先要在EFCore.Data類(lèi)庫(kù)項(xiàng)目上安裝這個(gè)包,直接在NuGet里面安裝即可。
這里是把EFCore安裝在一個(gè)單獨(dú)的類(lèi)庫(kù)項(xiàng)目里,所以作為啟動(dòng)項(xiàng)的控制臺(tái)程序也要安裝這個(gè)包。
2、添加遷移命令
使用下面的命令可以生成一個(gè)遷移:
Add-Migration Init_First
其中Init_First是為這次遷移起的一個(gè)名稱(chēng),如下圖所示:

執(zhí)行完遷移命令以后,會(huì)自動(dòng)生成幾個(gè)文件:

- 20200224163036_Init_First.cs:是針對(duì)本次遷移生成的文件。每次遷移都會(huì)生成一個(gè)對(duì)應(yīng)的遷移文件。里面有一個(gè)Up方法和一個(gè)Down方法,Up方法表示要執(zhí)行的操作,Down方法相當(dāng)于回滾,如果需要還原到上一個(gè)狀態(tài),就會(huì)執(zhí)行Down方法。
- EFDbContextModelSnapshot.cs:生成的配置文件。只會(huì)生成一次。
3、更新數(shù)據(jù)庫(kù)
執(zhí)行完上面的遷移命令,執(zhí)行下面的命令就可以更新到數(shù)據(jù)庫(kù):
Update-Database
如下圖所示:

這樣就會(huì)自動(dòng)生成數(shù)據(jù)庫(kù)。
3、命令行遷移
我們可以在PowerShell或者CMD命令行窗口里面進(jìn)行遷移,使用命令行遷移分為下面的兩個(gè)步驟。
1、添加遷移
首先我們要進(jìn)入EFCore.Data目錄下面,然后執(zhí)行下面的命令添加遷移:
dotnet ef migrations add Initial
如下圖所示:

遷移之后同樣會(huì)生成上面所講的文件。
2、更新數(shù)據(jù)庫(kù)
執(zhí)行下面的命令會(huì)將配置更新到數(shù)據(jù)庫(kù):
dotnet ef database update
如下圖所示:

執(zhí)行成功以后就會(huì)生成數(shù)據(jù)庫(kù)。
三、總結(jié)
上面介紹了三種生成數(shù)據(jù)庫(kù)表的方式,代碼生成的方式適合于控制臺(tái)程序,這種方式不太常用。尤其是在Web項(xiàng)目里面,經(jīng)常使用第二種和第三種方式。
到此這篇關(guān)于Entity Framework Core生成數(shù)據(jù)庫(kù)表的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Entity Framework Core對(duì)Web項(xiàng)目生成數(shù)據(jù)庫(kù)表
- Entity Framework Core使用控制臺(tái)程序生成數(shù)據(jù)庫(kù)表
- .NET Core使用EF生成數(shù)據(jù)庫(kù)出錯(cuò)的解決方法
- Entity Framework使用Code First模式管理數(shù)據(jù)庫(kù)
- 使用EF的Code?First模式操作數(shù)據(jù)庫(kù)
- EFCore 通過(guò)實(shí)體Model生成創(chuàng)建SQL Server數(shù)據(jù)庫(kù)表腳本
- Entity?Framework?Core基于數(shù)據(jù)模型創(chuàng)建數(shù)據(jù)庫(kù)
相關(guān)文章
解決ASP.NET中Type.GetType方法總返回空的問(wèn)題
今天做練習(xí)的時(shí)候用到了Type.GetType方法。。 可是他總返回null。。2008-03-03
ASP.NET Core使用SkiaSharp實(shí)現(xiàn)驗(yàn)證碼的示例代碼
本篇文章主要介紹了ASP.NET Core使用SkiaSharp實(shí)現(xiàn)驗(yàn)證碼的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
.NET中 關(guān)于臟讀 不可重復(fù)讀與幻讀的代碼示例
本篇文章小編將為大家介紹,.NET中 關(guān)于臟讀 不可重復(fù)讀與幻讀的代碼示例,有需要的朋友可以參考一下2013-04-04
asp.net 時(shí)間類(lèi) 一周的周一和周末的日期
asp.net中時(shí)間類(lèi)——得到一周的周一和周末的日期2008-12-12
asp.net關(guān)于Cookie跨域(域名)的問(wèn)題
Cookie是一個(gè)偉大的發(fā)明,它允許Web開(kāi)發(fā)者保留他們的用戶的登錄狀態(tài)。但是當(dāng)你的站點(diǎn)有一個(gè)以上的域名時(shí)就會(huì)出現(xiàn)問(wèn)題了。在Cookie規(guī)范上說(shuō),一個(gè)cookie只能用于一個(gè)域名,不能夠發(fā)給其它的域名。因此,如果在瀏覽器中對(duì)一個(gè)域名設(shè)置了一個(gè)cookie,這個(gè)cookie對(duì)于其它的域名將無(wú)效。如果你想讓你的用戶從你的站點(diǎn)中的其中一個(gè)進(jìn)行登錄,同時(shí)也可以在其它域名上進(jìn)行登錄,這可真是一個(gè)大難題。2012-12-12
ASP.NET Core Authentication認(rèn)證實(shí)現(xiàn)方法
這篇文章主要介紹了ASP.NET Core Authentication認(rèn)證實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
就是有時(shí)候窗口不能夠成功置頂,這時(shí)需要重新切換下標(biāo)簽,就可以置頂了,本文介紹C# SetWindowPos實(shí)現(xiàn)窗口置頂?shù)姆椒?/div> 2012-12-12
使用asp.net改變網(wǎng)頁(yè)上圖片顏色比如灰色變彩色
要能在網(wǎng)站上改變圖片的顏色,比如灰色的變成彩色,彩色的變成灰色多好啊,下面是通過(guò)asp.net實(shí)現(xiàn)的,有需求的朋友可以參考下2014-08-08最新評(píng)論

