EF7不是在EF6上更新,而是完全重寫了。它完全支持.NET Core runtime,也就是說以后你可以在Mac或者是Linux機器上使用EF了。
https://github.com/nicholaspei/OrchardNoCMS 我還在調研使用哪個ORM或者Micro ORM。Massive或者Dapper都不太適合,因為他們都依賴於System.Data,所以跨平台是個問題。
目前准備先使用EF作為一個實現,底層是一個很高的抽象接口,以后如果有合適的輕量級ORM,可以再替換。
回到正題,EF7比較大的變化:
a.只支持Code-First或者Code,不再支持圖形界面的生成。
b.支持關系型數據庫。
c.跨平台。
1.開始安裝EF7的包。
按照之前兩篇文章介紹的,使用kpm來安裝ef7使用Sql Server作為存儲的實現(你可以在*inux平台使用EntityFramework.InMemery去存儲數據)。
安裝完成后,可以看到project.json已經改變。
為了更方便的使用EF,EF團隊給我們開發了一個命令包,你可以安裝這個命令包來輕松創建數據訪問的代碼。下面的命令來安裝EntityFramework.Commands
2.使用命令來生成代碼。
這塊兒算是比較酷的,相對於之前版本的.NET,這一點兒算是很好的學習別的語言亮點。
下面我們需要編輯一下project.json來添加一個命令,用來通過ef生成代碼。
和k web類似,我們可以通過 k ef來創建DbContent文件和對應的SQL語句。
不過先通過 k ef來看一個神奇的事情:
可以看到k ef對應的有三個子命令,context和migration以及幫助命令。
context命令是無法創建DbContext的,所以需要手動創建一個DbContext,MyDbContext.cs文件。
接下是執行migration命令,使用migration來生成code-first的代碼。
執行k ef migration add “initial”命令。
查看代碼文件件,可以看到新生成了如下文件:
最后我們需要通過apply子命令,來生成數據庫中對應的表:
執行:k ef migration apply
數據庫中對應的表自動創建成功:
接下來就可以使用EF進行數據訪問了。
3.EF集成到Dependency Injection。。
下面需要做的就是把EF相關的內容注入到.NET5的默認容器中,以方便構造函數注入。
修改project.json如下:
4.修改Controller和添加Views文件夾。
接下來就可以修改Controller和添加Views了。
HomeController文件:
對應的View文件:
最后使用K web運行應用程序:
因為表中沒有數據,所以count為0。致此就完成了EF的使用初級教程。