ASP.NET Core 1.0: Using Entity Framework Core

伴隨着ASP.NET Core 1.0發佈的還有Entity Framework Core 1.0; 官方文檔鏈接:https://docs.efproject.net/en/latest/platforms/aspnetcore/index.html

跟以往一樣,Entity Framework 同樣兩種模式:Code First(即Database尚未創建)和Database First(即Database已然存在)。上述鏈接中有針對兩種模式的節點。

記錄一下使用EF過程中(Database First模式,還是習慣SSMS中自己創建Table和View等)遇到的問題:

1) Scaffold-Dbcontext一直使用失敗

首先,Scaffold-Dbcontext是一個Package Management Console命令(針對Visual Studio用戶,非Visual Studio用戶可以參考.NET Core CLI指令https://docs.efproject.net/en/latest/cli/dotnet.html),可以使用-Verbose來使其dump具體的錯誤信息;

其次,最新的Entity Framework 1.0 RC2依賴於Powershell 5.0,所以會導致許多問題。官方文檔(https://docs.efproject.net/en/latest/platforms/aspnetcore/existing-db.html)雖然提到RC2一個已知問題,但是其鏈接是失效的!倒是Github上的Issue 5376 https://github.com/aspnet/EntityFramework/issues/5376記錄了詳細的討論和解決方法。

官方的已知RC2問題的有效鏈接:https://docs.efproject.net/en/latest/cli/powershell.html#error-the-expression-after-in-a-pipeline-element-produced-an-object-that-was-not-valid

PowerShell 5.0的下載鏈接:https://www.microsoft.com/en-us/download/details.aspx?id=50395

我個人很推崇的解決方法是:

直接鍵入Scaffold-Dbcontext,安裝其提示一步步輸入Connection String和Provider。唯一的遺憾是,在這種方法下輸入Connection String時無法Copy/Paster,只能自己一個一個字符敲進去,略悲催。

2) 已支持的Provider:

除了標配的SQL Server之外(Azure SQL可以使用SQL Server),Entity Framework Core 1.0還提供了別的Provider。參閱:https://docs.efproject.net/en/latest/providers/index.html

3) 更新Dbcontext

迭代式的開發必然會導致同步問題,Dbcontext跟真實Database的Schema之間也一樣。譬如增加了一張新Table,需要同步到Dbcontext中。個人推薦的做法是,繼續使用Scaffold-Dbcontext ,配上-Force選項。

4) 更多的Package Management Console指令參閱:https://docs.efproject.net/en/latest/cli/powershell.html

是爲之記。

Alva Chien
2016.6.1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章