2010-02-03 72 views
15

我有一個包含5個表格的db。在開始時,我已經添加了這些表格,但之後決定刪除一些由於某些關係編譯錯誤。重新添加到實體模型(edmx)時不顯示錶格

現在,當我想將它們添加回來,我打開EDMX文件 - >從數據庫更新模型......我沒有看到附加選項卡下的表,但只有「刷新」選項卡下。

我怎樣才能將它們重新添加?

+0

右擊在EDMX水平,說添加到TFS。 – user6225888 2017-02-07 00:57:37

回答

21

爲了表重新添加到您的模型,你首先需要從模型中刪除該表。 (表的列表是可見的[model.Store]樹(見「模型瀏覽器」 pane-你可以單擊鼠標右鍵菜單打開它)。 當您運行「從數據庫更新模型......」該表將出現在「添加」選項卡中的「更新嚮導」的第一步

步驟來完成:

  1. 閉上你的模型在Visual Studio中
  2. 打開您的.edmx。文件在 文本編輯器中。
  3. 搜索和刪除 xml實體元素(請參閱下面的註釋 )。
  4. 在Visual Studio中打開您的模型。
  5. 點擊從 數據庫更新模型。

要刪除所有對錶的引用您的模型:

  • 在「EntityContainer相關」元素, 刪除所有「EntitySet的」子元素 有「名稱」屬性設置爲 的值[TableNameToReAdd]。
  • 在 「EntityContainer相關」元素,刪除所有 「AssociationSet」子元素,其中 一個「結束」元素存在已 他們的「EntitySet的」屬性設置爲 值[TableNameToReAdd]。
  • 在 「EntityContainer相關」元素,刪除其中 具有「名稱」屬性設置爲 值[TableNameToReAdd]所有 「的EntityType」子元素。
  • 在 「EntityContainer相關」元素,刪除所有 '協會子元素,其中一個 「結束」元素存在有其 「角色」屬性設置爲值 [TableNameToReAdd]。
+1

非常好的答案;這幫助我解決了這個問題。 我不知道自這個答案發布以來事情是否發生了變化,但現在解決方案似乎更加簡單。使用Model Browser窗口查看edmx文件,並找到要在Store樹中重新添加的表格。只需刪除節點,保存edmx,然後表格將在「添加表格」對話框中再次出現。 – 2012-07-16 11:14:41

2

你想讓它在模型中刪除後重新添加的實體。
除了編輯edmx文件還有另一種方法來做到這一點。
您將不得不臨時從數據庫中刪除該表。

注:我只這如果數據庫是不是在生產呢!

所以在SQL Server Management Studio中第一創建一個腳本
右擊與您的模型中缺失的實體對應表(一個或多個)。選擇'Script Table as','CREATE To','新查詢編輯器窗口'。

第二步是刪除表。再次右鍵單擊並選擇「刪除」。確認刪除。

早在Visual Studio中做模型的更新。

返回到SQL Server Management Studio並運行運行您剛剛創建的'create'腳本
表格將重新添加到您的數據庫中。

在Visual Studio中,您現在可以再次執行更新,您的表格將顯示在「添加」標籤下!

0

除了上述需要從模型中刪除的引用列表,請考慮刪除AssociationSetMapping元素以及如果您的表與其他表具有關聯關係。

5

我讀這篇文章,其他搜索選項,但最後我發現了另一個回答,幫助我短了這個問題。

從錯誤消息看起來像你的一個表/視圖沒有 的主鍵。 EF需要每個表都有一個主鍵,以便 生成實體鍵。您仍然可以運行您的應用程序, 但我強烈建議您按照警告添加主鍵。

Link which solved my issue.

更新

如果一段時間後,你所做的一切都是罰款,仍然沒有體現出任何的變化添加新列或更改數據類型。

的這個嘗試手動更新的最佳方式,仍然是沒有希望的,那麼作爲建議@mathijsuitmegen,刪除和添加表,但這是喜歡最後的選擇。

+0

這是我的問題。缺少我正在導入的表上的主鍵。 – 2016-12-21 10:07:58

2

更簡單的解決方法是在Model Browser

[modelName].Store -> Tables/ViewS 

刪除該表沒有顯示出來。然後右鍵點擊模型「update from database」,表格應該在那裏。

相關問題