2012-12-24 32 views
0

我知道,當你在不同的命名空間中有兩個具有相同名稱的類時,Code First曾經有過問題(或者仍然存在)。我發現了很多關於此的帖子。我有一點...不同?從CLR到EDM的「模棱兩可的」映射

好吧,不過,他們「固定」它,他們變得更糟。我沒有兩個同名的班級,我有一堂課。我向你保證,你沒有看到雙重。下面顯示的類名完全相同,並且沒有其他類名。

CLR類型到EDM類型的映射不明確,因爲多個CLR類型與EDM類型「Classname」相匹配。以前發現CLR類型'App.Domain.Classname',新發現CLR類型'App.Domain.Classname'。

當我試圖用模板「MVC控制器使用實體框架進行讀/寫操作和視圖創建新控制器」時,我得到此錯誤多次(對於不同的類名稱)。

+0

在錯誤消息中,這兩種類型似乎都具有相同的名稱:'App.Domain.Classname'。你是否碰巧引用了同一個程序集的兩個版本,因此所有/大部分類型都是重複的?請注意,即使EF在加載POCO實體時使用名稱空間來區分類型,它也不會幫助您,因爲在您的情況下,完整類型名稱是相同的。 – Pawel

+0

是的。這是我的問題的重點。我沒有兩個版本。 我的「解決方案?」放棄並重新開始一個新的項目/新數據庫。根據我的記錄,我花了一天半的時間(12小時)在這個「節省時間」的尖端上兜售(我認爲這意味着「我們在發佈之前根本沒有測試過這一點,節省了大量時間它「)Code First系統。 –

+0

你沒有提供任何repro,所以很難弄清楚你是如何結束重複的 - 異常消息顯示你有重複,重新開始後你沒有重複。這可能意味着你的項目中有一些東西導致了異常。我想知道如果你嘗試使用CodeFirst,但同時在你的項目中有一個edmx文件,導致你的edmx文件生成重複的實體。另外,如果有人試圖幫助你,對你不知道的測試工作粗魯和評論是非常不專業的。 – Pawel

回答

1

如果您在同一模塊中有多個edmx文件,則會出現此問題。即使在這些edmx中,也可能存在同一種兩種實體。這是ef4的框架問題。但可以通過手動更改實體名稱來解決。「這是由edmx生成的。或者簡單地在實體的任何一箇中添加一個更多的轉儲列。首先,我們應該在所有的實體類以及參考實體類中做更多的改變。