2016-10-22 39 views
1

我們正在將實體框架4中的項目更新爲實體框架6.我們使用數據庫優先映射。當我們最初構建項目時,我們重命名了實體模型中的許多導航屬性,以改善屬性名稱的語義。在實體框架實體模型中更改導航屬性名稱導致不加載關係

當我們更新到Entity Framework 6時,.edmx模式發生了變化,所以我們重新創建了所有名稱更改。不幸的是,在第一次訪問數據庫,實體框架將引發此異常:

System.Data.Entity.Core.MetadataException was unhandled by user code 
    HResult=-2146232007 
    Message=Schema specified is not valid. Errors: 
The relationship 'web_appModel.fk_service_order_workorder_id' was not loaded because the type 'web_appModel.workorder' is not available. 
The following information may be useful in resolving the previous error: 

The required property 'asset' does not exist on the type 'Persistence.Interface.workorder'. 

我們的模型有一個service_order表的外鍵的工作單表的外鍵的資產表。工單對象中的導航屬性最初稱爲資產,但我們重命名了它。

這種情況下的問題是實體框架無法加載關係a到b,因爲關係b到c中的導航屬性的名稱已更改。

數據位於PostgreSql數據庫中。我們使用DevArt DotConnect作爲實體框架提供者。

+0

我有完全相同的問題。事實證明,edmx文件現在還爲每個外鍵引用指定了導航屬性名稱,如只要名稱與生成的C#模型不匹配,DbContaxt就會報告模式錯誤。通過定製T4模板生成自定義屬性名稱的所有解決方案現在都已損壞。尚未找到解決方案。 –

回答

0

您需要從數據庫更新EntityFramewok MODEL。 雙擊模型,然後您會發現表格的模式,右鍵單擊任何空白部分並選擇從數據庫更新模型。 然後轉到「刷新」選項卡,然後選擇表格。

希望它適合你

+0

我很抱歉我的問題不清楚。我可以從數據庫更新模型。在打開.edmx的情況下,可以使用模型瀏覽器視圖。通過瀏覽到實體類型Visual Studio允許更改.edmx來覆蓋默認的屬性名稱。我的問題是,這樣做後,實體框架將不會加載關係。 – toddw

+0

我不確定它是否會對您有所幫助。但請確保您允許使用外部密鑰。您也可以手動拖放.edmx中表格之間的關係 –