2016-06-01 101 views
1

我正在使用來自nuget的最新實體框架,但實體映射在數據庫更改時仍然無法正常工作。我正在做的程序:實體模型框架沒有正確更新

  1. 在帶有DB表的代碼中設置同步實體模型。
  2. 更改表中某些字段的數據類型。
  3. 從數據庫更新實體模型。
  4. 新數據類型未更新。

還有一些其他的方案不適用於DB更改未反映到實體模型中。我已經閱讀了一些文章,並認識到這些可能是已知的問題。但是,是否有解決這些問題的通用解決方案?現在我必須手動更改實體模型源代碼中的數據類型。是否有一些配置更改可以幫助實體同步更準確?

+0

也想知道,同樣的事情發生,如果你改變'NULL'到'NOT NULL'的東西 –

+0

你的實體是否遵循任何類型的繼承? – RBT

+0

我在我的實體中看不到任何繼承。它是從現有的數據庫創建的,但我確實看到了FK關係的組合。 –

回答

0

我看到Visual Studio肯定能夠檢測到已更新列的數據類型不匹配。這就是爲什麼我在下面的「錯誤列表」窗口中看到以下錯誤。我改變了薪酬列的數據類型從Intnchar(10)Employee表在我的數據庫:

Error 2019: Member Mapping specified is not valid. The type 'Edm.Int32[Nullable=False,DefaultValue=]' of member 'Salary' in type 'DbFirstTpccModel.Employee' is not compatible with 'SqlServer.nchar[Nullable=False,DefaultValue=,MaxLength=10,Unicode=True,FixedLength=True]' of member 'Salary' in type 'DbFirstTpccModel.Store.Employee'. 

因此,要解決通過通過它檢測到數據類型的變化,最好是直接刪除相應的更新模型嚮導這個問題實體從模型設計器,然後通過更新模型嚮導重新添加表。

+0

我的實體模型不能像這樣工作。在表字段數據類型更改後,我使用了「從數據庫更新模型...」菜單,但未檢測到更改。如果我刪除模型中的該字段,然後更新模型,它會在帶有後綴的新名稱的實體中創建一個新字段。 –