ASP.NET Web API - Entity Framework(EDMX) Navigation Property引發的JSON物件循環參考錯誤

Entity Framework(EDMX) Navigation Property

上圖是一個ASP.NET Web API專案,從範例Northwind資料庫裡加入兩張有關連性的資料表到Entity Framework(EDMX)裡,很正常的,它會加入巡覽屬性(Navigation Property),當我們什麼都不修改,直接加入API Controller,例如,ProcutsController和OrderDetailsController然後建置、啟動、測試Web API服務會立即得到一個錯誤。

JSON的錯誤訊息與產生原因

完整訊息如下

小心,不要被Google Chrome偷偷吃掉你的記憶體

Google Chrome的快是要付出代價

Google Chrome 19記憶體使用情況

這是開啟Google Chrome 25,預設只連上blog.kkbruce.net所使用的記憶體情況,一開啟就吃了496.4 MB的記憶體(Firefox 19是161.3 MB,IE 10是138.5 MB。)。可以看得出來,Google Chrome的快是用你電腦的記憶體換來的,好或壞,這看個人。

為何說偷偷吃掉記憶體

先看第二張圖:

Google Chrome 19記憶體使用情況2

ASP.NET MVC 3-4無法新增Controller

問題的來龍去脈

Visual Studio 2012在安裝【Web Tools 2012.2】正式版更新之後,ASP.NET MVC 3與ASP.NET MVC 4(C#與VB.NET)專案,如果使用【Database first + Entity Framework】會無法新增MVC Controller與API Controller。

Database first示意圖

  1. 新增範例資料庫
    新增Northwind範例資料庫
  2. 新增Entity Framework實體資料模型(EDMX)
    新增Entity Framework實體資料模型(EDMX)

新增MVC / API Controller之英文版錯誤訊息:

新增MVC / API Controller之英文版錯誤訊息
'ProjectName.ClassName' is not part of the specified 'ProjectName.???Entities' class, and the 'ProjectName.???Entities' class could not be modifed to add a 'DbSet<ProjectName.ClassName>' property to it.(For example, the 'ProjectName.???Entities' class might be in a compiled assembly.)

新增MVC / API Controller之中文版錯誤訊息:

新增MVC / API Controller之中文版錯誤訊息
'ProjectName.ClassName'不是指定之'ProjectName.???Entities'類別的一部分,而且無法修改'ProjectName.???Entities'類別以新增'DbSet<ProjectName.ClassName>'屬性(例如,'ProjectName.???Entities'類別可能位於已編訪的組件中)

DIY-如何升級筆電SSD與轉移作業系統至SSD

新機Lenovo T530

在過年前購入新機Lenovo T530,使用Lenovo T530與前一台Lenovo T430的體驗是一致的,但有更大的螢幕、更好的CPU與更高的重量,但少了背光鍵盤。在Lenovo T430享受過SSD的速度感之後,已無法認受HDD那似慢非慢速度。SSD真的是非常值得投資,省下的時間真的非常可觀。一放完年假後,立即採購一顆SSD,之前我是採用120 GB SSD,後來發現,120 GB SSD在安裝Hyper-V之後,才安裝第一套虛擬機,空間就已經使用完畢,這一次就選擇256 GB SSD來進行升級。升級SSD算簡單,轉移OS至SSD就需要一點技巧。

Web Tools 2012.2 for Facebook範本

ASP.NET MVC 4的SPA與Facebook範本

Web Tools 2012.2正式版更新在ASP.NET MVC 4上新增了二個範本,一個是SPA範本,另一個是Facebook範本,SPA範本的故事和OData很像,從ASP.NET MVC 4 Beta出現,ASP.NET MVC 4 RC/RTM又不見了,更新Web Tools 2012.2之後,又出現了。Facebook範本是一全新範本,讓開發人員可以快速整合Facebook社交媒體。SPA範本使用簡單,但要說明並不容易,因為它整合了非常多樣技術。以下先說明使用Facebook範本建置一個【Facebook應用程式】的網站。