2010年9月9日 星期四

MVC專案中常見的Entity Framework 資料庫欄位型態設定錯誤(column type error)與更正方式

休士頓!我們發生問題了!

當我們在MVC專案中,已經設定好了Entity Framework,也寫好了MVC程式,執行Compile整個專案,結果我們發現VS 2010告訴我們出了一點錯誤,如下圖,初步看來,是資料庫的Log這個Table的RecordID這個Int且是自動編號的欄位,我們卻設成String型態了,所以資料無法新增到Log這個Table中。


檢查資料庫Schema

檢查問題的第一步驟,我們當然回到資料的源頭資料庫中去檢查是否Log這個Table的RecordID這個欄位資料型態是否正確,結果如下圖,是正確的,RecordID這個欄位的資料型態是我們所需要的Int且是自動編號。所以問題應該是出在MVC專案中的某一個設定給設錯了。


重新更新資料庫Schema到Entity Framework設定

通常我們會打開MVC專案,點選Entity Framework程式(*.edmx),並且再次執行更新資料庫Schema的設定,讓MVC專案中的RecordID這個欄位和資料庫保持同步。如下圖在Model Browser視窗中按下淺橘色的功能列進行同步DB Schema。


很不幸,我們認為已經修正問題了,開始執行Compile整個專案,天啊,還是出現同樣的錯,又回到原點了。

問題在這裡

結果,檢查了半天,原來是因為第一次建立Entity Framework的時候,RecordID這個欄位資料型態我們在資料庫設成字元(char)型態,這是錯的,我們改正資料庫這個欄位型態後,並也回到MVC專案中去將Entity Framework與資料庫進行同步,但是並沒有真正的將錯誤的資料型態改正,因為我們下列這個地方沒有改到,就是Entity Framework Schema關聯圖中,Log這個Table的RecordID這個欄位資料型態,VS開發環境並沒有因為同步更新資料庫的動作而去修正為正確的Int且是自動編號,還是錯誤的。


「手動」調整資料欄位型態

我們還需要「手動」打開Log這個Table的RecordID這個欄位的屬性設定視窗,「手動」將資料型態改正為Int32(相對應資料庫為Int資料型態)。


修改完畢後,我們執行Compile整個專案,這時可發現這個錯誤已經被修正了。這有點被VS 開發環境給誤導了,導致誤以為Schema已經與資料庫同步了,其實Entity Framework同步資料庫看來除非我們把Entity Framework Schema關聯圖中的Log 這個Table給完全刪除,重新執行同步資料庫一次並勾選Log 這個Table。不然我們就需要用上述的「手動」的去修正在Entity Framework 資料欄位型態。

2010年9月2日 星期四

美國太空總署 NASA 發表免費 iPhone 與 iPad 應用軟體

美國太空總署(NASA)最近製作了iPhone與iPad可下載的免費App,喜歡瀏覽最新宇宙與航太科技最新發展的網友可去下載,可以直接看到許多珍貴與遙遠的星系圖像,NASA最新科技發展,各項太空探險任務最新發展等等。

NASA iPhone App

以下是NASA iPhone App的畫面,內容也是可直接觀看許多星系圖像,還有太空探索的Video與各項任務的更新。感覺很炫啊!為了隨時可使用NASA的這個App,我很想買一台iPhone來把玩一下。

擷自:美國太空總署(NASA)官網


擷自:美國太空總署(NASA)官網




NASA iPad App

以下是NASA iPad App的首頁畫面,這些星球是直接可以點下去的(在iPad上面),然後會有進一步的行星解說。

擷自:美國太空總署(NASA)官網

若是你想下載上面這張圖當作桌面,請直接點選這裡

這邊有段影片實機展示NASA iPad App,在這短片中,可以感覺iPad真是一具「最佳媒體瀏覽器」。



在NASA iPad App的應用軟體內,可看到有如下的畫面與功能,最新太空星系與太空探險圖像、衛星軌跡全球追蹤、珍貴航太科技發展影片等等。

擷自:美國太空總署(NASA)官網


相關連結

美國太空總署NASA App for iPhone
美國太空總署NASA App for iPad