2013-08-03 132 views
36

我對存儲過程和EDMX有無窮無盡的問題。我創建了一個過程,從數據庫更新了模型,並且都工作。然後我刪除了一列,並在存儲過程中添加了一個新列。我更新了模型,但EDMX似乎沒有刷新proc定義。存儲過程和更新EDMX

我放棄了proc,並做了更新,但是手動刪除了對proc的所有引用。我結束了重命名proc,並通過數據庫中的模型更新導入。

我剛剛有同樣的問題。添加了一個新列,並重命名了一個現有列。我通過數據庫的更新模型刷新了EDMX,但EDMX沒有改變,顯然在運行時它失敗了。如何使用實體框架完成存儲過程更新?

enter image description here

我刪除了PROC,再生模式,刪除了「CS」文件的PROC,編譯,然後再添加程序到數據庫,重新生成的模型,並砰!它增加了相同的模型3次,只有最後一個是正確的。它爲什麼不停地帶回舊版本?

回答

7

我能找到的唯一修復方法是關閉EDMX,然後手動編輯XML,即使從數據庫中刪除存儲的proc並從數據庫更新模型之後,仍然提及了proc。從XML中刪除行已解決了這個問題。

89

(此解決方案是EF 6.我沒有在其他EF版本的嘗試。它的工作原理很好。)


轉到模型瀏覽器。 MyStoreProc是存儲過程的名稱(作爲示例)。 MyStoreProc將出現在3個地方。

  1. 第一地方 - 在複雜類型 - >如MyStoreProc_result
  2. 第二地方 - 在函數導入 - >如MyStoreProc
  3. 第三名 - 下儲存 Procdures /功能 - >如MyStoreProc

從模型中刪除所有三個。 保存edmx(單擊窗口中的ctrl + S)。然後右鍵單擊並單擊從數據庫更新模型。然後再次添加更新的存儲過程並保存。

解決沒有任何麻煩:)

+0

你是一個拯救生命的人:D ...謝謝! – Muhammedh

+1

Thanks Muhammedh – SArifin

+0

這非常有幫助,謝謝!我必須承認,我有點不知所措,因爲我一直在edmx圖中查找這些內容,並且存儲過程不顯示在那裏 - 只有表和視圖。 –

1

首先通過做「從數據庫更新模式」刷新SP,如果是工作,很好,如果不是,丟了同樣的異常然後做遵循以下步驟。 1.雙擊.edmx文件。 2.在模型瀏覽器中,從複雜類型,函數導入和存儲過程/函數中刪除SP。 3.全部保存。 4.通過「從數據庫更新模型」再次添加您的SP。 5.全部保存。