2015年12月21日 星期一

【Entity Framework】Update model from database

由資料庫更新模型後產生大量錯誤

'Namespace.XXXClassName' 和 'Namespace.XXXClassName' 因為名稱相同導致模稜兩可; 請修改名稱或進一步限定名稱

'Namespace.XXXEntities' 不包含 'XXXStoredProcedure' 的定義,也找不到擴充方法 'XXXStoredProcedure' 來接受型別 'Namespace.XXXEntities' 的第一個引數 (您是否遺漏 using 指示詞或組件參考?)

還有其他有的沒的錯誤

我的問題是在程式碼產生策略本來是 舊版 ObjectContext 但是新的版本會自動採用 T4,結果就產生了重複的兩份造成很多衍生問題。

先在 edmx 的屬性視窗的下拉選單找你修改的那個 Class(因為圖形介面如果資料表太多很不好找),把它刪掉。

在 edmx 空白處右鍵從資料庫更新模型,選好連接字串,選版本(我是只能用EF5),在更新精靈把你缺的資料表加回來。


移到方案總管,你會看到 edmx 底下多了兩個 .tt 的檔案,刪掉它們。

在 edmx 的屬性視窗找到 [程式碼產生策略] 換成 [舊版ObjectContext],然後重 build 就可以解決了(若還有錯誤應該會是 schema 的改動對程式面的影響)。

ref: 主管教的

1 則留言: