C# 更改实体框架实体模型中的导航属性名称导致关系无法加载

C# 更改实体框架实体模型中的导航属性名称导致关系无法加载,c#,entity-framework,postgresql,C#,Entity Framework,Postgresql,我们正在将一个项目从实体框架4更新为实体框架6。我们使用数据库优先映射。最初构建项目时,我们重命名了实体模型中的许多导航属性,以改进属性名称的语义 当我们更新到EntityFramework6时,.edmx模式已经更改,所以我们重新创建了所有名称更改。不幸的是,在第一次访问数据库时,Entity Framework会引发以下异常: System.Data.Entity.Core.MetadataException was unhandled by user code HResult=-214

我们正在将一个项目从实体框架4更新为实体框架6。我们使用数据库优先映射。最初构建项目时,我们重命名了实体模型中的许多导航属性,以改进属性名称的语义

当我们更新到EntityFramework6时,.edmx模式已经更改,所以我们重新创建了所有名称更改。不幸的是,在第一次访问数据库时,Entity Framework会引发以下异常:

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'.
我们的模型有一个服务订单表,外键指向workorder表,外键指向asset表。workorder对象中的导航属性最初称为asset,但我们将其重命名

本例中的问题是实体框架无法加载关系a到b,因为关系b到c中的导航属性的名称已更改


数据位于PostgreSql数据库中。我们使用DevArt DotConnect作为实体框架提供程序。

您需要从数据库更新EntityFramewok模型。 双击模型,然后您将找到表的模式,在其中右键单击任何空白部分并选择“从数据库更新模型”。 然后转到“刷新”选项卡,并选择“表格”


希望它适用于您

您需要从数据库更新EntityFramewok模型。 双击模型,然后您将找到表的模式,在其中右键单击任何空白部分并选择“从数据库更新模型”。 然后转到“刷新”选项卡,并选择“表格”


希望它对你有用

很抱歉我的问题不清楚。我能够从数据库中更新模型。打开.edmx后,模型浏览器视图可用。通过浏览到实体类型,Visual Studio允许更改.edmx以覆盖属性的默认名称。我的问题是这样做之后,实体框架将不会加载关系。我不确定它是否会帮助您。但请确保您允许使用外部密钥。您还可以手动拖放.edmxI中表之间的关系。抱歉,我的问题不清楚。我能够从数据库中更新模型。打开.edmx后,模型浏览器视图可用。通过浏览到实体类型,Visual Studio允许更改.edmx以覆盖属性的默认名称。我的问题是这样做之后,实体框架将不会加载关系。我不确定它是否会帮助您。但请确保您允许使用外部密钥。此外,您还可以手动拖放中的表之间的关系。edmxI也有完全相同的问题。事实证明,edmx文件现在也像这样为每个外键引用指定导航属性名称,只要名称与生成的C模型不匹配,DbContaxt就会报告模式错误。以前通过自定义T4模板来生成自定义属性名称的所有解决方案现在都已损坏。还没有找到解决办法。我也有同样的问题。事实证明,edmx文件现在也像这样为每个外键引用指定导航属性名称,只要名称与生成的C模型不匹配,DbContaxt就会报告模式错误。以前通过自定义T4模板来生成自定义属性名称的所有解决方案现在都已损坏。还没有找到解决办法。