Entity?Framework?Core基于數(shù)據(jù)模型創(chuàng)建數(shù)據(jù)庫(kù)
1.簡(jiǎn)介
使用Entity Framework Core構(gòu)建執(zhí)行基本數(shù)據(jù)訪問(wèn)的ASP.NET Core MVC應(yīng)用程序。使用遷移(Migrations)基于數(shù)據(jù)模型創(chuàng)建數(shù)據(jù)庫(kù),你可以在Windows上使用Visual Studio 2017 PowerShell或在Windows、macOS或Linux上使用.NET Core CLI來(lái)學(xué)習(xí)創(chuàng)建數(shù)據(jù)庫(kù)。
2.創(chuàng)建新項(xiàng)目
2.1系統(tǒng)必備
在創(chuàng)建新項(xiàng)目之前都要檢查是否安裝以下軟件:
●具有以下工作負(fù)載的Visual Studio 2017 15.7版或更高版本(Visual Studio必備):
○“ASP.NET和Web開發(fā)”(位于“Web 和云”下)
○“.NET Core跨平臺(tái)開發(fā)”(位于“其他工具集”下)
●.NET Core 2.1 SDK.(Visual Studio、CLI必備)
2.2 創(chuàng)建項(xiàng)目
Core MVC項(xiàng)目可以通過(guò)Visual Studio手動(dòng)來(lái)創(chuàng)建,也可以通過(guò)在CLI輸入命令行來(lái)創(chuàng)建,兩者區(qū)別是前者限制在Windows平臺(tái)上創(chuàng)建項(xiàng)目,后者是可以跨平臺(tái)創(chuàng)建項(xiàng)目。
2.2.1Visual Studio手動(dòng)來(lái)創(chuàng)建項(xiàng)目
●打開Visual Studio 2017
●“文件”>“新建”>“項(xiàng)目”。
●從左菜單中選擇“其他項(xiàng)目類型”>“Visual Studio 解決方案”。
●點(diǎn)擊新建解決方案右鍵選擇“添加”>“新建項(xiàng)目”>“已安裝”>“Visual C#”>“.NET Core” 。
●選擇“ASP.NET Core Web 應(yīng)用程序”。
●輸入“MyCoreWeb”自定義名稱,然后單擊“確定”。
●在“新建ASP.NET Core Web應(yīng)用程序”對(duì)話框中:
○確保在下拉列表中選擇“.NET Core”和“ASP.NET Core 2.1”
○選擇“Web 應(yīng)用程序(模型視圖控制器)”項(xiàng)目模板
○確保將“身份驗(yàn)證”設(shè)置為“不進(jìn)行身份驗(yàn)證”
○單擊“確定”
警告:如果你使用“單獨(dú)用戶帳戶”(而不是“無(wú)”)進(jìn)行身份驗(yàn)證,Entity Framework Core模型會(huì)添加到Models\IdentityModel.cs中的項(xiàng)目。
2.2.2通過(guò)在CLI輸入命令行來(lái)創(chuàng)建項(xiàng)目
運(yùn)行以下命令以創(chuàng)建MVC項(xiàng)目:
dotnet new mvc -n MyCoreWeb
更改為項(xiàng)目目錄,你輸入的下一個(gè)命令需要針對(duì)新項(xiàng)目運(yùn)行:
cd MyCoreWeb
3.安裝Entity Framework Core
要安裝EF Core,請(qǐng)為要作為目標(biāo)對(duì)象的EF Core數(shù)據(jù)庫(kù)提供程序安裝程序包。有關(guān)可用提供程序的列表,請(qǐng)參閱數(shù)據(jù)庫(kù)提供程序。因?yàn)槲冶緳C(jī)是用SqlServer數(shù)據(jù)庫(kù),所以可以通過(guò)以下兩種方式安裝EF Core。
3.1在包管理器控制臺(tái)輸入命令來(lái)安裝程序包(“工具”>“NuGet包管理器”>“程序包管理器控制臺(tái)”)
install-package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.0
3.2通過(guò)在CLI輸入命令行來(lái)安裝程序包
--更改為項(xiàng)目所在目錄 cd /d D:\Project\MyCoreWeb --輸入CLI命令安裝程序包 dotnet add package Microsoft.EntityFrameworkCore.SqlServer
4.創(chuàng)建模型
在Models文件夾下創(chuàng)建BloggingContext.cs文件,為了簡(jiǎn)單起見,我們都將Blog、Post實(shí)體代碼寫在BloggingContext.cs文件中:
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; } }
5.使用依賴注入注冊(cè)上下文
在應(yīng)用程序啟動(dòng)過(guò)程中,通過(guò)依賴關(guān)系注入注冊(cè)服務(wù)(如 BloggingContext),以便能夠通過(guò)構(gòu)造函數(shù)的參數(shù)和屬性向使用服務(wù)的組件(如 MVC 控制器)自動(dòng)提供該服務(wù)。如果想要在MVC控制器里面調(diào)用BloggingContext.cs,那么就要在Startup.cs中將其注冊(cè)為服務(wù)。
public void ConfigureServices(IServiceCollection services) { var connection = @"Server=.;Database=Blogging;Trusted_Connection=True;ConnectRetryCount=0"; services.AddDbContext<BloggingContext>(options => options.UseSqlServer(connection)); }
為簡(jiǎn)單起見,這里把連接字符串直接在代碼中定義。但是通常是會(huì)將連接字符串放在配置文件或環(huán)境變量中。例如:
appsettings.json { "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "BloggingDatabase": "Server=.;Database=Blogging;Trusted_Connection=True;" } }
Startup.cs中其注冊(cè)的服務(wù)代碼為:
public void ConfigureServices(IServiceCollection services) { services.AddDbContext<BloggingContext>(options => options.UseSqlServer(Configuration.GetConnectionString("BloggingDatabase"))); }
6.遷移創(chuàng)建數(shù)據(jù)庫(kù)(重點(diǎn))
這個(gè)章節(jié)比較重要,下面讓我們來(lái)學(xué)習(xí)下如何遷移創(chuàng)建數(shù)據(jù)庫(kù)。
6.1Visual Studio PowerShell手動(dòng)來(lái)創(chuàng)建項(xiàng)目(“工具”>“NuGet包管理器”>“程序包管理器控制臺(tái)”)
Add-Migration InitialCreate Update-Database
如果收到錯(cuò)誤,指出The term 'add-migration' is not recognized as the name of a cmdlet,請(qǐng)關(guān)閉并重新打開Visual Studio。
Add-Migration命令為遷移搭建基架,以便為模型創(chuàng)建一組初始表。Update-Database命令創(chuàng)建數(shù)據(jù)庫(kù)并向其應(yīng)用程序新的遷移。
因?yàn)槌绦虬芾砥鞑恢С諴owerShell 2.0版本的遷移,需要升級(jí)到3.0版本,所以這里就暫時(shí)演示不了,請(qǐng)大家自行升級(jí)3.0或以上版本測(cè)試。
或者收到這樣錯(cuò)誤,無(wú)法將“Add-Migration”項(xiàng)識(shí)別為 cmdlet、函數(shù)、腳本文件或可運(yùn)行程序的名稱。
請(qǐng)?jiān)赑owerShell輸入如下命令行:Import-Module C:\Users\用戶名\.nuget\packages\microsoft.entityframeworkcore.tools\3.1.0\tools\EntityFrameworkCore.psd1,再執(zhí)行如上命令即可。
6.2通過(guò)在CLI輸入命令行來(lái)遷移
--更改為項(xiàng)目所在目錄 cd /d D:\Project\MyCoreWeb --遷移搭建基架 dotnet ef migrations add InitialCreate --創(chuàng)建數(shù)據(jù)庫(kù)并向其應(yīng)用程序新的遷移 dotnet ef database update
下面我們來(lái)看看遷移創(chuàng)建數(shù)據(jù)庫(kù)效果:
到此這篇關(guān)于Entity Framework Core基于數(shù)據(jù)模型創(chuàng)建數(shù)據(jù)庫(kù)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Entity?Framework?Core生成數(shù)據(jù)庫(kù)表
- 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ù)表腳本
相關(guān)文章
.NET 6開發(fā)TodoList應(yīng)用之實(shí)現(xiàn)API版本控制
API接口版本管理,對(duì)于一些規(guī)模稍大的企業(yè)應(yīng)用來(lái)說(shuō),是經(jīng)常需要關(guān)注的一大需求。本文將介紹在.NET 6開發(fā)中如何實(shí)現(xiàn)API版本控制,感興趣的可以了解一下2022-01-01ASP.NET Core使用Log4net實(shí)現(xiàn)日志記錄功能
這篇文章介紹了ASP.NET Core使用Log4net實(shí)現(xiàn)日志記錄功能的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03使用最小?WEB?API?實(shí)現(xiàn)文件上傳的Swagger支持
這篇文章主要介紹了使用最小?WEB?API?實(shí)現(xiàn)文件上傳Swagger支持,我們使用最小?WEB?API?實(shí)現(xiàn)文件上傳功能,雖然客戶端訪問(wèn)是正常的,但是當(dāng)打開?Swagger?頁(yè)面時(shí),沒(méi)法使用?Swagger?頁(yè)面測(cè)試,下面就來(lái)一篇支持Swagger的,需要的小伙伴可以參考一下2022-02-02ASP.NET從客戶端中檢測(cè)到有潛在危險(xiǎn)的request.form值的3種解決方法
這篇文章主要介紹了ASP.NET從客戶端中檢測(cè)到有潛在危險(xiǎn)的request.form值的3種解決方法,這是ASP.NET開發(fā)中一個(gè)比較常見的經(jīng)典的問(wèn)題,需要的朋友可以參考下2015-01-01ASP.NET GridView 實(shí)現(xiàn)課程表顯示(動(dòng)態(tài)合并單元格)實(shí)現(xiàn)步驟
GridView,ASP.NET中很常用的數(shù)據(jù)顯示控件,這里,我將用這個(gè)控件來(lái)實(shí)現(xiàn)課程表的顯示。首先說(shuō)說(shuō)課程表的顯示與普通記錄的顯示有何不同?感興趣的朋友可以了解下,或許對(duì)你有所幫助2013-02-02