2010-06-01 134 views
34

如果從數據庫構建edmx文件,然後數據庫發生更改,那麼如何讓模型獲取更改?實體框架:如何在數據庫更改時刷新模型?

您是否刪除整個模型並重新生成,或者您是否可以檢測到更改?

我看到一篇文章提到「更新您的模型」rt。鼠標在edmx文件上的命令,但我沒有看到它。

Updating your edmx to reflect changes made in your db (.net linq-to-entities)

我剛剛開始。

+4

它不是在edmx文件上,而是在圖形界面。通過雙擊左鍵在圖形編輯器中打開edmx,你會在那裏找到'更新模型'。 – LukLed 2010-06-01 09:11:50

回答

43

您是否在看設計師或代碼視圖?您可以強制設計師通過右鍵點擊你的EDMX文件打開並選擇Open With -> ADO.NET Entity Data Model Designer

右鍵單擊EDMX設計師的設計表面上,然後單擊Update Model From Database...

所有實體默認刷新,新的實體中只添加如果你選擇它們。


編輯: 如果它不清爽。

  • 在EDMX設計器中選擇所有表和視圖。
  • 刪除它們。
  • 然後,從數據庫
+0

右鍵單擊edmx文件時沒有看到「筆用 - > ADO.NET實體數據模型設計器」選項,但其他選項可用。我想知道爲什麼,但你提供了一個有效的答案。 TY。 – ChadD 2010-06-02 15:33:14

+0

右鍵單擊edmx文件,然後選擇打開,然後選擇數據模型設計器 – 2014-02-11 15:07:22

+3

是否可以通過編程方式執行此操作?我想把它作爲我的構建過程的一部分。 – 2014-10-05 20:28:14

14

更新模型我已經找到了設計師「從數據庫更新」只能處理小的變化。如果你已經刪除表,改變的外鍵或(gasp)用函數映射改變了存儲過程的簽名,你最終會得到這樣一個混亂的狀態,你將不得不刪除所有的實體,並「從數據庫中添加」或者乾脆刪除edmx資源並重新開始。

+0

「從數據庫更新」嚮導取代了SSDL,但僅對CSDL進行了一些更改。因此,當你有更復雜的更改時,SSDL和CSDL往往不同步,導致你看到的'混亂狀態'。 我有一個加載項可以解決VS2010中EF4設計器的這個問題;它比較三層(DB,SSDL,CSDL)中的每一層,顯示所有的差異,並允許您選擇同步差異。如果你想嘗試一下,你可以在http://www.huagati.com/edmxtools/下載加載項並獲得試用許可證。 – KristoferA 2010-09-02 02:44:34

0

我只是需要更新.edmx模型。模型/運行自定義工具選項沒有爲我刷新字段,但是一旦打開了圖形設計器,我就可以手動重命名這些字段。

1

這可能會幫助你們。(我已經應用了我的項目)

這裏有3個簡單的步驟。

  1. 轉到您的Solution Explorer中。尋找的.edmx文件(通常的根目錄下找到
  2. 。打開.edmx文件,將出現一個模型圖表窗口。右鍵單擊該窗口上的任意位置,然後選擇「從數據庫更新模型」。將出現一個更新嚮導窗口。點擊完成更新您的模型。
  3. 保存.edmx文件。

就是這樣。它會同步/刷新你的模型庫,對你的數據庫進行更改。

有關詳細說明。請訪問下面的鏈接。

EF Database First with ASP.NET MVC: Changing the Database並更新其模型。

+0

注意。謝謝你的建議。 – 2017-06-10 03:19:32

1

更新CodeFirst模型不可能自動執行。我也不建議。 因爲代碼的優點之一是你可以使用POCO類。如果您更改了此POCO類,則不希望某些自動生成的代碼破壞您的工作。

但是,您可以創建一些模板解決方案添加您更新/添加的實體到新模型。然後收集並移動您的新cs文件到您的工作項目。 這樣你就不會有衝突,如果它是一個新的實體,你可以簡單地將相關的cs文件添加到現有的項目。如果它是一個更新,只需從文件中添加一個新屬性即可。 如果您只需將一些列添加到一個或兩個表中,您可以手動將它們添加到POCO類中,而不需要任何額外的工作,這就是使用Code-First和POCO類的美妙之處。

0

我不知道爲什麼它不會自動更新,但是在您構建解決方案後,一旦您刪除或修改了任何模型類或模板,您將從數據庫更新「重建解決方案」

它適用於我的Visual Studio 2015!

相關問題