日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

ef mysql db first_Net Core使用EF之DB First

發(fā)布時間:2025/3/11 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ef mysql db first_Net Core使用EF之DB First 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.新建一個.net core的MVC項目

新建好項目后,不能像以前一樣直接在新建項中添加ef了,需要用命令在添加ef的依賴

二.使用Nuget添加EF的依賴

輸入命令:? Install-Package Microsoft.EntityFrameworkCore.SqlServer

安裝成功后就可以在依賴項中看到

注意執(zhí)行命令的項目你可能需要選擇一下

三.如果是使用db first,需要根據(jù)數(shù)據(jù)庫生成model,就還需要使用命令添加兩個依賴

Install-Package Microsoft.EntityFrameworkCore.Tools

Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

安裝成功后就可以在依賴項中看到

四.相關(guān)依賴添加成功后,就可以更具一個命令就可以從數(shù)據(jù)庫生成model了

命令:? ? Scaffold-DbContext "Server=.;Database=Food;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

-OutputDir Models的意思是把生成的實體和上下文都輸出到Models這個文件夾如果不需要這樣直接輸出到當(dāng)前類庫中不接即可

注意:有可能執(zhí)行這個命令會報錯:

1:執(zhí)行這一步的時候出現(xiàn)了點問題 ,因為系統(tǒng)是win7,powershell版本太低了,不支持這個命令,需要安裝

3.0以上的powershell版本才行

2:?Could not load assembly 'DAL'. Ensure it is referenced by the startup project 'xxxx'.

是因為主項目沒有添加到這個DAL層的引用,添加了就行了,所以估計執(zhí)行這個命令會使用到啟動項目的一些東西

3:Your startup project 'xxxxx' doesn't reference Microsoft.EntityFrameworkCore.Design.This package is required for the Entity Framework Core Tools to work. Ensure your startup project is correct, install the package, and try again.

他是說你啟動項目沒有這個依賴,在啟動項目里邊執(zhí)行一下這個兩個命令就好了

Install-Package Microsoft.EntityFrameworkCore.Tools

Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

好像執(zhí)行執(zhí)行那個.Tools也可以,我就奇怪了nuget執(zhí)行的明明不是啟動項目為什么啟動項目中還要添加這個依賴呢,

只在啟動項目添加這個依賴行不行呢

如果model已經(jīng)生成過了,想全部覆蓋的話,可以在后面加一個-force命令:

Scaffold-DbContext "Server=.;Database=Food;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -force

更新某個表:后面加-tables 表名

Scaffold-DbContext "Server=.;Database=Food;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models?-tables Article

但是更新某個表有坑啊,如果覆蓋了,那個表不會生成導(dǎo)航屬性,而且那個山下文對象也只有那個表的內(nèi)容了....暫時沒有找到更好的辦法...

單獨更新拷貝過來,或者全部更新,或者直接寫手吧,比如添加了一個字段什么的

添加成功后在models可以看到, 生成了上下文對象與和表對應(yīng)的model

官方文檔

然后就可以開始使用EF了public?IActionResult?Index()

{

FoodContext?fc?=?new?FoodContext();

List?ptlist?=?fc.ProType.ToList();

ViewBag.ptlist?=?ptlist;

return?View();

}

五.使用依賴注入來裝載EF的上下文對象

.net core中用了不少的依賴注入,官方文檔中也推薦使用

1:刪除方法protected?override?void?OnConfiguring(DbContextOptionsBuilder?optionsBuilder)

{

//#warning?To?protect?potentially?sensitive?information?in?your?connection?string,?you?should?move?it?out?of?source?code.?See?http://go.microsoft.com/fwlink/?LinkId=723263?for?guidance?on?storing?connection?strings.

optionsBuilder.UseSqlServer(@"Server=.;Database=Food;Trusted_Connection=True;");

}

2:添加方法public?FoodContext(DbContextOptions?options)

:?base(options)

{

}

添加的是一個構(gòu)造函數(shù)用于構(gòu)造函數(shù)注入(這個方法在新版的時候會自動加入)

3:在startup.cs的ConfigureServices方法中添加依賴注入public?void?ConfigureServices(IServiceCollection?services)

{

//?Add?framework?services.

services.AddMvc();

services.AddDbContext(option?=>?{

option.UseSqlServer("Data?Source?=.;?Initial?Catalog?=?EFCore_dbfirst;?User?ID?=?sa;?Password?=?sa.123");

});

}

注:usersqlserver是一個擴展方法,需要添加ef core的引用using Microsoft.EntityFrameworkCore;

連接字符串寫入配置文件

4:使用的時候就不能直接去實例化了否則會報錯找不到上下文對象

應(yīng)該使用注入的方式去獲取ef對象,例如構(gòu)造函數(shù)注入private?CNBlog_ServerContext?ef;

public?ArticleDAL(CNBlog_ServerContext?context)?//通過依賴注入得到實例

{

ef?=?context;

}

微軟官方文檔:

https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db

歡迎加群討論技術(shù),群號:677373950

總結(jié)

以上是生活随笔為你收集整理的ef mysql db first_Net Core使用EF之DB First的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。