網頁

Entity Framework的Entities類別不出現在IntelliSense

Entity Framework的Entities類別出現與不出現在IntelliSense

Action方法中正常的IntelliSense
Action方法中不正常的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型別的原因。

使用Entity Framework加入Controller

圖三是透過資料模型來建立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型別的問題。

結論是,注意Controller的命名空間與using的參考。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。