發表文章

目前顯示的是 12月, 2020的文章

錯誤 2010: 指定為此 MSL 之一部分的 Column 'xxxxx' 不在 MetadataWorkspace 中

圖片
 最近的專案遇到一個惱人的問題, 某個資料庫上的預存程序(資料表函數)加到EF內,後來更新後,資料庫就一直有問題。 當初沒有找出問題,但後來只要更新EF就心驚膽跳,很怕跑出以下訊息: 本來應該是在模型瀏覽器內把該物件刪除,再重新加入就可以, 偏偏重新編譯後發生錯誤, 錯誤 2010: 指定為此 MSL 之一部分的 Column 'xxx' 不在 MetadataWorkspace 中 一開始以為是SQL端函數定義的參數少了這個欄位'xxx',但不對啊,同事並沒有寫錯。  吃盡苦頭後發現,這隻函數的回傳欄位數有變化,新版的函數回傳欄位是沒有這個'xxx' 的 所以要展開模型瀏覽器的函式匯入,從這裡去做調整 我的狀況是從資料庫端新增物件成功,但在函式匯入內看到的預存程序/函式名稱變成空的,"傳回下列項目的集合"也沒有顯示。 另外,暴力法砍掉物件重抓,系統照理說會抓取函式物件回傳資料的結構,在這裡叫做"複雜類型"( Complex Type )。但很奇怪,Visual Studio一直會保留舊版的內容。這就是bug的來源。 處理方式: (1)自己重新選擇資料庫端的預存程序/函式名稱 (2)要自己重新選擇。然後"傳回下列項目的集合",如果一直連到舊的複雜類型, 這時候要點選"取得資料行資訊",確認讀到的欄位與DB端的Schema相同,這時再"建立新的複雜類型"。