Entity Framework的Entities類別出現與不出現在IntelliSense
圖一是正常我們加入ADO.NET 實體資料模型(EDMX檔案,Entity Framework)之後,在MVC的Action方法中撰寫相關資料庫程式碼時應該出現的IntelliSense提示。
圖二,這是學生在操作時發生的問題,後來我回家模擬來出,在加入Entity Framework Data Model之後,於MVC的Action方法裡的IntelliSense不會出現NorthwindEntities型別的提示。
發生原因及解決辦法
在加入Entity Framework Data Model之後,在建立Controller時「是否有使用Data Model」來加入Controller會造成Controller類別的命名空間不同或缺少using 命名空間,這是造成IntelliSense無法呈現NorthwindEntities型別的原因。
圖三是透過資料模型來建立Controller,它產生的Controller類別如下:
using CH03.Models; namespace CH03.Controllers { public class ProductsController : Controller { } }
在舊專案中,我也有發現以下命名空間的程式碼。不過,近日我剛重灌電腦,Visual Studio的環境也是新的,我還模擬不出來是如何產生這樣的命名空間的Controller:
namespace CH02.Models { public class ProductsController : Controller { } }
“專案.Controllers”是正常Controller命名空間。而“using 專案.Models”是工具自動會幫我們加入的,這就是原因所在。如果是使用「空白 MVC 控制器」並不會自動加入“專案.Models”命名空間,所以IntelliSense不顯示NorthwindEntities型別是正常的。
“專案.Models”是不正常的Controller命名空間,說真的,沒碰過這個問題前,我也沒注意到為何舊專案裡的Controller的命名空間是指定到專案的Models去,也因為此命名空間直接指到Models去了,所以使用上不會碰到IntelliSense不顯示NorthwindEntities型別的問題。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。