迫不及待更新到VS2013 Update 2,開始享受內建的SCSS支援,也展開了TypeScript冒險之旅。

VS2013更新後,開啟工作專案冒出以下錯誤: (但編譯、執行完全不受影響)

Cannot load 'X:\TFS\MyProject\DEV\src\DAL\Boo.edmx': Specified cast is not valid.
無法載入 'X:\TFS\MyProject\DEV\src\DAL\Boo.edmx': 指定的轉換無效。

在VS2013試圖開啟Boo.edmx檔案,出現同樣錯誤,推測是新版EF Model編輯器與原.edmx不相容所致。很快在Microsoft Connect找到報案記錄,確認問題出在EF 5的Metadata函數(Function)參數資料缺少Precision及Scale屬性造成Model設計工具轉換錯誤(嚴格來說是新版設計工具未考量舊版格式的Bug)。如果.edmx沒用到有數字參數的Function,則不會出現錯誤。

在Bug修正前,有個暫時解決方案。如下圖,使用文字編輯工具開啟edmx檔,找到SSDL區的Function定義,尋找所有Type="decimal"或Type="numeric"的Parameter,手動加上Precision="8" Scale="4"兩個Attribute(Precision/Scale的值不重要,有給即可),存檔後,Visual Studio 2013就能正常開啟原有edmx檔囉~

2014-05-21更新: 此Bug在EF6.1 Beta已加入修正。(感謝Chris Torng補充)


Comments

# by ChrisTorng

EF 6.1.1 Beta 1 Available http://blogs.msdn.com/b/adonet/archive/2014/05/20/ef-6-1-1-beta-1-available.aspx 似乎修復了 Designer: Error opening EF5 edmx with decimal precision in EF6 designer https://entityframework.codeplex.com/workitem/1653

# by Jeffrey

to ChrisTorng, 感謝補充,已加入本文。

Post a comment