.Net Core 出來(lái)了很久,作為一個(gè).Net的忠實(shí)信徒,卻這么久沒(méi)有去觸碰它,實(shí)在慚愧,最近呢,在學(xué)習(xí)Nodejs,Linux Shell腳本,Java開(kāi)發(fā),列式存儲(chǔ)數(shù)據(jù)庫(kù),這也是沒(méi)辦法,畢竟吃飯要緊,公司讓做什么,那就去學(xué)習(xí)什么,最后發(fā)現(xiàn)學(xué)成了學(xué)富半車(chē),什么都入了門(mén),但是啥都不同,也就是擦個(gè)邊球,連最?lèi)?ài)的.net都好久沒(méi)有去寵幸了,感覺(jué)我倆已經(jīng)陌生了許多,今天突然起興,看看這個(gè).NET
CORE到底如何傾國(guó)傾城,首先呢,說(shuō)明下,我在虛擬機(jī)中安裝了win10,因?yàn)槲沂莔ac系統(tǒng),當(dāng)然筆記本是公司的,我可沒(méi)有錢(qián)買(mǎi)這個(gè)東東,win10 在去年已經(jīng)安裝了vs2017,只是偶爾需要程序處理下數(shù)據(jù),所以用最熟悉的c#去完成,感覺(jué)vs沒(méi)啥大變化,今天我要試試vs for mac到底如何呢,來(lái)來(lái)來(lái),我們一起去看看,mac版的vs如何安裝,我就不說(shuō)了,你們百度,有很多人都貼圖說(shuō)明了,我覺(jué)得這種教程沒(méi)啥意義了,當(dāng)然今天我要寫(xiě)的可能也沒(méi)啥,但是確實(shí)我遇到了,所以我要說(shuō)下,作為筆記,萬(wàn)一我以后又遇到了忘了咋辦,好了,說(shuō)下我要干什么,很簡(jiǎn)單
1,創(chuàng)建一個(gè)mvc項(xiàng)目
2,創(chuàng)建EF數(shù)據(jù)庫(kù)模型(dbfirst,因?yàn)槲液軕校?/p>
3,mvc+ef結(jié)合查詢(xún)數(shù)據(jù),展示出來(lái)
好了就這么簡(jiǎn)單,我們開(kāi)始吧!
首先創(chuàng)建一個(gè)mvc項(xiàng)目,這個(gè)很簡(jiǎn)單,我也貼圖示意下:

打開(kāi)vs for mac,樣子還是很小清新的,我喜歡。

創(chuàng)建項(xiàng)目,.Net Core -> App -> Asp.Net CoreWeb App (MVC)? 選好了就下一步吧!

給自己的項(xiàng)目起個(gè)牛逼的名字,就像你有了自己的兒子,給他起個(gè)很牛逼的名字一樣。

MVC項(xiàng)目就這樣創(chuàng)建好了,看看我們的左邊項(xiàng)目結(jié)構(gòu),是不是和傳統(tǒng)的項(xiàng)目很像,特別喜歡.net的項(xiàng)目結(jié)構(gòu),非常清晰,不像java似的亂七八糟的,我不是說(shuō)java技術(shù)不好,我只是說(shuō)java的結(jié)構(gòu)設(shè)計(jì)怎么可以這么亂,不能改進(jìn)下嗎?開(kāi)發(fā)一味的追求繁瑣復(fù)雜,有意思的嗎?科技的進(jìn)步就是為了讓事情做起更簡(jiǎn)單,如果更復(fù)雜了,是不是有悖我們的初衷呢,所以,大愛(ài).net.么么噠!
我們二話不說(shuō),運(yùn)行下看看

完美運(yùn)行,而且還是響應(yīng)式的網(wǎng)頁(yè),此刻應(yīng)有掌聲(啪啪啪)
至于項(xiàng)目結(jié)構(gòu)中有很多配置文件是我們沒(méi)見(jiàn)過(guò)的,這里呢很慚愧,我剛接觸,還是不是很清楚,所以,我就不瞎說(shuō)了,下面我們繼續(xù)創(chuàng)建EF-DBFIRST
首先,我們先創(chuàng)建數(shù)據(jù)庫(kù),我這里用SqlServer數(shù)據(jù)庫(kù),我只能在另一臺(tái)機(jī)器創(chuàng)建了。

這是我的數(shù)據(jù)庫(kù),兩個(gè)表作為例子,一個(gè)User代表用戶(hù),一個(gè)Post,表示用戶(hù)的帖子。好了下面我們回到vs上,繼續(xù)創(chuàng)建我們的EF吧!首先先創(chuàng)建一個(gè)EF文件夾,我們創(chuàng)建的EF就會(huì)在這里生成。下面才是干貨
通過(guò)NuGet添加引用工具包,下面是列表
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.SqlServer.Design
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore
右擊Dependencies后點(diǎn)擊Add Packages…

然后搜索Microsoft.EntityFrameworkCore,在搜索結(jié)果中找到這幾個(gè)包選中,根據(jù)自己.Net core 的版本選擇相應(yīng)的版本,然后就添加吧!過(guò)程中會(huì)彈出一些詢(xún)問(wèn)窗口,接受就好了,反正不接受,你就不能用!

這個(gè)弄好了以后,不要著急,還沒(méi)完事,下面右擊項(xiàng)目,選擇Tools然后點(diǎn)擊Edit File,就看到了xml文件,好了我們簡(jiǎn)單的修改下,如下圖

在圖中所示地方添加紅框子里的這句話,方便你們復(fù)制,我在這里也貼一下。
“<DotNetCliToolReference?Include="Microsoft.EntityFrameworkCore.Tools.DotNet"?Version="2.0.0" />”
保存好了嗎?我們繼續(xù)右擊項(xiàng)目打開(kāi)終端,Tools中的Open in Terminal,在彈出的終端中輸入dotnet ef試試。如果是下圖,恭喜你,成功了一半了!

當(dāng)讓我最開(kāi)始可不是顯示這個(gè),如果你和我一樣遇到了這種情況

如果提示你
“Version for package `Microsoft.EntityFrameworkCore.Tools.DotNet` could not be resolved.”
這句話,也不用擔(dān)心,我也解決了,我在這個(gè)網(wǎng)頁(yè)中找到的答案
有時(shí)間你可以看看。

人家說(shuō),用了這個(gè)東西,需要restore一下,所以在終端先輸入“dotnet restore”然后在試試dotnet ef然后就可以了!
好了,我們現(xiàn)在可以創(chuàng)建我們的EF模型了。
在終端輸入
"dotnetef dbcontext scaffold "data source=192.168.1.101;initial catalog=MyWebDB;userid=sa;pwd=sa;" Microsoft.EntityFrameworkCore.SqlServer -c MyWebDBEntities-oEF"
當(dāng)然數(shù)據(jù)庫(kù)ip是你自己的,名字也是你自己的,密碼也是,最后有個(gè)-c參數(shù)表示生成的EF名字,-o參數(shù)是創(chuàng)建在哪個(gè)目錄下,還記得我們創(chuàng)建了EF文件夾嗎?這里用到了,好了我們?cè)囋嚢?!這個(gè)過(guò)程我們需要等一小會(huì),如果沒(méi)有提示任何問(wèn)題,那么我們就成功了80%,歐耶!?。?/p>

這是創(chuàng)建完EF文件夾下的文件,好了,我們可以寫(xiě)點(diǎn)小程序運(yùn)行下了!
在Controllers文件夾中創(chuàng)建一個(gè)TestControllers.cs控制器文件

這是Index中的代碼
在Views中創(chuàng)建Test文件夾,再創(chuàng)建index.cshtml視圖文件

好了,我們?cè)谶\(yùn)行吧,把路徑后面加上/Test就好了

這就是效果!
好了,就寫(xiě)到這里吧!我知其然,未知其所以然,所以能,大家可以提問(wèn)題,我會(huì)去研究提高的!謝謝閱讀!