2015-09-23 65 views
1

我一直負責提升我們的軟件使用EF6。以前它是使用EF4 & 5.實體框架6 - 重複使用同一個表中多個EDMX文件

的組合,我們使用數據庫第一種方法。代碼更改進行得順利,但在運行應用程序並執行查詢之後,會引發以下錯誤。指定

模式是無效的。錯誤:

CLR類型的電火花加工類型的映射是不明確的,因爲多個CLR類型匹配EDM類型「tblAccountMaintenance」。

以前發現的CLR類型'DALUsers.StatusDB.tblAccountMaintenance',新發現的CLR類型'DALUsers.AccountsDB.tblAccountMaintenance'。

問題中的課程tblAccountMaintenance在多個.tt文件中生成。這些類是對同一個表的引用,僅在不同的.edmx文件中引用。

在這種情況下,簡單地刪除其中一個引用並不是一個好的選擇,因爲我們對其他幾個表使用了類似的策略,並且需要數千行重寫的代碼。

什麼我需要做的EF6解決這一問題?

+0

你試過把EDMX文件在不同的命名空間? – tdbeckett

+0

是的,不同的命名空間 –

+0

它需要修改你的T4模板文件,而不僅僅是簡單地定位'edmx'文件。 ***除非你創建新的edmx文件(模型)並將它們放置在不同的文件夾中***最初***。 – Hopeless

回答

0

因此,原來的問題(使用相同的表,具有相同名稱的多個edmx文件在同一項目)是有關事實的.tt文件包含從dbContext獲得新的對象 - 這是限制/限制是特定於dbContext

我下載這個插件:https://visualstudiogallery.msdn.microsoft.com/66612113-549c-4a9e-a14a-f629ceb3f89a

,讓我創造EF6.tt文件從EnityObject而不是不具有這種約束派生。這也使得我不必更新我的所有代碼來使用新的dbContext方法,這是一個很好的方法。

作爲一個紙條給別人看這 - 這可能不是最好的答案,如果你已經開始用較新的項目或有少量的edmx文件/表格作爲EntityObject不一樣強大dbContext,然而,這是一個良好的創可貼修復 - 尤其是如果你像我一樣,並且在EF7發佈時必須完成重寫。

相關問題