2013-05-29 22 views
3

我有一個使用實體框架4的現有MVC 3應用程序。該模型是使用數據庫優先模式生成的。我也有「自動代碼生成」生成類。數據庫第一個實體框架更新模型不起作用:可能是什麼原因?

今天,我做了一個簡單的修改我的數據庫。字段從「int」變爲「float」。我去了.edmx,做了一個右鍵單擊,從數據庫更新模型...

但是,當我看着該領域,它根本沒有改變。我仔細檢查了一切,並修改了數據庫,但模型從未改變......是否意味着我需要手動完成此操作?

我記得我之前做了一些更新(比如2個月前),它似乎在當時工作......我需要檢查什麼可以打破?

編輯

當在顛覆EDMX diff文件看,這種變化似乎做,但它在「圖形模式」看時,該變化是不存在的。此外,沒有生成的代碼被更新。命令Update model from database

  • 檢查從的.edmx屬性窗口
  • 任何自定義代碼生成的模板,導致了它的數據庫連接字符串中出現

    -   <Property Name="PreparationTime" Type="int" Nullable="false" /> 
    +   <Property Name="PreparationTime" Type="float" Nullable="false" /> 
    
  • 回答

    5

    這是正常行爲。 ;-)

    即使您執行「從數據庫更新模型」嚮導,只要修改某些數據庫端即可,您的概念模型不會更改。 請看看這個SO answer,我解釋了EDMX是如何構建的以及它應該如何發展的。

    +0

    你是對的!謝謝(你的)信息! –

    2

    檢查表

    • 檢查Output窗口的任何錯誤?
    • 備份您的.edmx的副本,然後嘗試去除的.edmx和修改後的實體重新添加回
    +0

    1)輸出是可以的!2)連接字符串永遠不會改變,看到我的編輯,改變似乎在文件本身3)我使用的EF4代碼生成器4)將嘗試,只有當它是我最後的手段! –

    0

    我知道這是一個老問題,但既然給出的答案在我的情況下不起作用,我想我只是將我的解決方案留給其他人處理類似問題。

    假設你用SQL Server Management Studio中的工作:

    • 右鍵點擊 「庫圖」,選擇 「新建數據庫圖表」。
    • 包括所有的表格(除了「__MigrationHistory」,如果存在的話)並按下「添加」。
    • 嘗試再次更新您的EDMX。

    對我來說,這是一個解決方案,幾個月後,我一直在edmx的關鍵項目中使用解決方法,但拒絕以正常方式更新。一位新的同事提到這是可能的解決辦法。我可以節省的時間,如果我早先知道這個...

    相關問題