2012年12月25日 星期二

EDMX 中,Entity Container Name 與 Namespace 必須不同名稱

EDMX 可以 compile ,卻出現 Error 10001:The symbol 'Entities' has already been defined.

同事來信問了這個問題。使用 entity framework 4.0,整個類別庫可以編譯,但 edmx 會出現如上的錯誤。

image

打開該專案,真的有這個問題。以 xml 來檢視時,也出現了下面的錯誤。

image

解法

上圖中,Schema Namespace (Entities) 與 EntityContainer Name(也是 Entities) 相同,會不會是名稱衝突啊?試著將其中一個改名後,果然解了這個問題。

至於為什麼會發生has already been defined.這樣的訊息嘛,看來 EntitySet 的 Name 與對應的EntityType 是指不同的東西,而NameSpace 與 EntityContainer 同名稱,會讓EntitySet 與 EntityType 同名,造成 edmx 內部名稱的衝突,因此發生錯誤。但此問題並非程式碼的 namespace 問題,因此 compile 會成功

沒有留言:

Share with Facebook