2011-01-24 63 views
9

我有DBML文件沒有更新的嚴重挫折時,我改變我的存儲過程。LINQ和存儲過程DBML更新問題

這是什麼情況。我改變了我的存儲過程。然後,我從.DBML文件中刪除存儲過程並重新添加它。它在.DBML文件中正確更新,但.designer.cs文件不會更新。我找到的唯一解決方法是刪除存儲過程,然後刪除存儲過程返回的表,添加表然後添加存儲過程(全部在.DBML文件中)。而這只是有時候做的伎倆。

任何人都有這個問題?當然,在Visual Studio 2008中有更適合的方式來更新DBML文件?

在此先感謝

+0

dbml的可視化設計器是一個很有「一個炮打響」的事情 - 有沒有任何形式的更新功能。您可以調查第三方工具,例如Huagati的DBML工具來解決這個問題,或者切換到Entity Framework 4,它在基礎數據庫發生變化時更好地支持從數據庫更新現有模型。 – 2011-01-24 09:33:02

+0

我知道這是老了,但我今天就迷迷糊糊的學習行爲(添加新的設計類)是否預期。爲什麼不從新創建的類中剪切並粘貼到舊類,然後刪除新創建的類。這使得您的版本控制排序併爲您提供正確的類。 – Ron 2014-01-31 17:31:56

回答

13

當您更改SP時,無法更新DBML文件。

我有一個建議讓你擺脫它。這是我們在項目中遵循的。

每當您在SP中進行更新時,無論它是輸入參數還是輸出參數。將xml文件編輯爲xml文件(您只能在VS中使用xml打開)並保存dbml文件。這會自動更新designer.cs文件中的更改。通過這種方式,您不必從dbml中刪除SP並重新添加它以獲取更新。雖然這是手動過程,但它確實可以幫助你很多。

通過這種方式,您甚至可以修改您從SP獲得的輸出的實體名稱(以符合您的實體命名約定),因爲這些默認名稱與SP名稱相同。

1

1請記住,SQL和VS是完全2個單獨的服務。它只是連接在一起,並不意味着它互相同步。

2在我看來,DBML是有點ms-sql只。我用來創建完全基於接口操作的DB Factory,並將數據作爲DataTable或DataSet返回。這段代碼可以用於所有標準數據庫。

4

enter image description here還有一件事我做的是從視圖中打開服務器資源管理器。它會列出數據庫連接。右鍵單擊指向數據庫並刷新的特定連接。如果您添加了任何新的存儲過程,或者您已經更新了任何新的存儲過程,它將自動更新。

0

此外,在實體框架6,這是一個問題。 刪除.edmx文件中的更改元素和「從數據庫更新模型」。