把原本 ASP.NET MVC 5的範例,改用 ASP.NET Core專案來做,基本上大同小異。
唯獨 DB-First「資料庫連結(DB Connection)」的地方,需要自己下指令。
當初錄影時,是VS 2019 +.NET Core 2.x版
但我把範例重新在 .NET Core 3.1重做一次,都是正常的。請放心。
有位學員發生了錯誤,
(1) Scaffold-DbContext : 無法辨識 'Scaffold-DbContext' 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱。請檢查名稱拼字是否正確,如果包含路徑的話,請確認路徑是否正確,然後再試一次。
位於 線路:1 字元:1
+ Scaffold-DbContext 'Data Source=.\SqlExpress;Initial Catalog=xxxxxxx ...
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Scaffold-DbContext:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
解決方法:
在VS 2019新增一個 ASP.NET Core 2.x 或 3.1專案後
務必先透過NuGet安裝兩個套件
-- 「Microsoft.EntityFrameworkCore.Tools」套件
-- 「Microsoft.EntityFrameworkCore.SqlServer」套件 註解:因為我用MS SQL Server來搭配
(課程中有講,如果您發生錯誤,可以先檢查一下,是不是自己漏了哪些步驟? 影片重播、回頭自己看一下,比對一下)
(2) Visual Studio 上方的功能列 「工具」 =>「Nuget套件管理器」=>「套件管理器主控台」
輸入指令 Scaffold-DbContext 'Server=.\sqlexpress;Database=xxxx' Microsoft.EntityFrameworkCore.SqlServer
出現這樣的錯誤:
A connection was successfully established with the server, but then an error occurred during the login process. (provider: Shared Memory Provider, error: 0 - 管道的另一端上無任何處理程序。)
與伺服器的連接已成功建立,但在登入程序時發生錯誤。 (provider: 共用記憶提供者, error: 0 - 管道的另一端上無任何處理程序。)
解決方法:
我上課使用的指令是
Scaffold-DbContext 'Server=.\sqlexpress;Database=資料庫名稱;Trusted_Connection=True;MultipleActiveResultSets=true' Microsoft.EntityFrameworkCore.SqlServer
(課程中有講,如果您發生錯誤,可以先檢查一下,是不是自己漏了哪些步驟? 影片重播、回頭自己看一下,比對一下)
之前上課介紹的微軟文件,現在找不到了(可能改版或是刪除)
所以他找到類似的網頁,照著做,卻發生錯誤 https://docs.microsoft.com/zh-tw/ef/core/managing-schemas/scaffolding
我也找不到當初的官方文件了,比較類似的是這個網頁介紹 Code-First,請參閱 https://docs.microsoft.com/zh-tw/aspnet/core/data/ef-mvc/intro?view=aspnetcore-3.1
[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm
https://www.dotblogs.com.tw/mis2000lab/2023/01/30/mis2000lab_MVC_onlineLearning2023
[ASP.NET Core MVC]第一天 免費課程 3小時完整試聽
https://www.dotblogs.com.tw/mis2000lab/2023/01/30/AspNetCore_MVC_First_Day_Free_20230130
沒有留言:
張貼留言