2011-03-01 61 views
1

我有一個實體框架模型,我注意到模型文件中的圖表中缺少一個表,usergroup表。這意味着我無法從標準SQL調用中修改它成爲實體框架的一部分(即爲實體創建一個類文件)。SQL Server外鍵搞亂實體框架模型

我可以在「實體集」下看到它,但不能在圖中看到它。每次我嘗試添加時,都不會將其顯示爲添加到「更新模型」菜單中的選項。所以我從實體集中刪除了它,然後我終於在「更新模型」中看到它。我添加了它。仍然不會出現在圖表上(它只是把它作爲實體集合,但沒有爲它繪製圖表)。

在得到沮喪之後,我覺得有一些外鍵阻止它被添加。所以我去了我的sql管理器,並從usergroup表中刪除了任何外鍵。

所以,現在,當我添加模型時,它出現在圖中!是!

但是,現在編譯器錯誤3002說模型不匹配。 「潛在的運行時違規表」說映射是不正確的,但我不明白---沒有映射那裏,沒有任何關聯用戶組到任何東西。

這是怎麼發生的?我檢查了其他外鍵和映射屬性,沒有映射到用戶組。這是Visual Studio 2010中的錯誤嗎?

+0

該映射可能指的是從概念模型到物理存儲模型的映射--CSDL,MSL,SSDL文件的三部曲,它將物理SQL Server表映射到您的模型實體。我不認爲它涉及任何與外鍵有關的事情...... – 2011-03-01 21:30:47

+0

它沒有出現的原因是它可能包含具有自定義類型的計算列或列。 – zsong 2011-03-02 16:10:58

回答

1

這可能是edmx文件的部分不同步或可能是部分損壞。

您可以嘗試在文本編輯器中打開edmx文件並檢查是否有錯誤。

您也可以嘗試刪除該表,然後在文本編輯器中打開edmx文件,並確保已刪除對該表的所有引用。

映射錯誤不在表之間,它位於edmx文件的各個部分之間。

+0

這次的工作非常順利。我首先使用notepad ++刪除文件中的所有用戶組引用。保存。然後我重新添加了表格和編譯的所有內容。謝謝!非常奇怪的是,視覺工作室允許事物變得不自動,並且不會自動修復它們。 – Dexter 2011-03-02 17:31:14