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