2012-02-03 51 views
2

我正在MVC 3中使用實體框架創建一個Web應用程序,並且最近的規範更改已要求我將一個新列添加到其中一個數據庫表(記錄創建日期)。MVC 3實體框架 - 未填充相應屬性的新數據庫列

我已經添加了新列,並使用現有記錄的值填充它,並在實體框架中更新了模型。當我查看與新列對應的表的對象時,我可以看到這個新數據的屬性:但是該屬性的數據沒有被檢索。

只是爲了澄清:

  • 我加列「CreatedDate」(日期時間)到餐桌「訂單」在我的數據庫
  • 我填充值此列對我的現有記錄並將其設置爲「不空「
  • 我更新的實體框架模型
  • 我的模式‘訂單’現在有一個非空的財產‘CreatedDate’
  • 我填充使用LINQ(訂單列表」鄰在DB.Orders選擇o「)
  • 對於我的列表中的任何條目,entry.CreatedDate返回「01/01/0001 00:00:00」,而不是我輸入數據庫的值。

怎麼回事?

+0

您是如何更新模型的?你是否也更新了映射? – 2012-02-03 14:58:02

回答

0

EdmMetadata表?

你在數據庫中有EdmMetadata表嗎?據我所知,該表包含一個由數據庫結構簽名的密鑰。所以如果這個值沒有改變,代碼就不會看到改變。好消息是不再需要此表格:

modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); 
+0

在模型瀏覽器中查看edmx文件時,我通過上下文菜單中的「從數據庫更新模型」選項更新了模型。 我可以在模型瀏覽器上看到「CreatedDate」列,並且映射詳細信息顯示它已映射到相應的數據庫列,並且兩者都是日期時間格式,但沒有數據正在填充。 我的數據庫中沒有EdmMetadata表。 – 2012-02-06 09:25:40

+0

對不起,我假設EF代碼優先。你是否檢查過所有三個生成文件的映射? (ssdl,msl,csdl)。確保通過msl將CreatedDate映射回ssdl。模型瀏覽器主要關閉csdl,因此可能會在其他人中映射問題。如果我沒有記錯的話,這些應該生成到edmx的bin中。 – 2012-02-06 10:29:25

+0

想象一下 - 訂單記錄是由存儲過程返回的,而不是LINQ直接導入實體框架的,正如我之前所說的那樣。感謝所有幫助我找出從哪裏開始尋找的人! – 2012-02-06 10:41:59