EF 7迁移中使用分部类扩展OrderItem遇[InverseProperty]错误求助
EF 7迁移报错:[InverseProperty]属性无效问题解决
问题场景
我尝试通过在Main项目中创建分部类,给Domain项目的OrderItem类新增属性,但执行EF 7迁移时触发以下错误:
[InverseProperty] attribute on property 'OrderItem.Order' is not valid.
The property OrderItems is not a valid navigation on the related type Order. Ensure that the property exists and is a valid reference or collection navigation.
相关代码
Domain项目中的OrderItem类
namespace Domain.Orders; [Table("Table_34")] public partial class OrderItem : BaseEntity { [Column("Field_09")] public ProductType ProductType { get; set; } [Column("Field_10", TypeName = "decimal(18, 0)")] public decimal Price { get; set; } [Column("Field_11")] public long ProductItemId { get; set; } [Column("Field_12", TypeName = "decimal(18, 0)")] public decimal Discount { get; set; } [Column("Field_13", TypeName = "decimal(18, 0)")] public decimal Tax { get; set; } [Column("Field_14")] [ForeignKey("Field_14")] public long OrderId { get; set; } [Column("Field_15")] public int Count { get; set; } [Column("Field_16", TypeName = "datetime")] public DateTime? StartDate { get; set; } [Column("Field_17")] public long? Time { get; set; } [InverseProperty("OrderItems")] public virtual Order Order { get; set; } }
Main项目中的OrderItem分部类
namespace Domain.Orders; public partial class OrderItem { [InverseProperty("OrderItem")] public License License { get; set; } [InverseProperty("OrderItem")] public RequestLicense RequestLicense { get; set; } }
问题原因与解决办法
- 报错根源:
OrderItem.Order上的[InverseProperty("OrderItems")]要求Order类必须存在名为OrderItems的有效导航属性,但当前Order类里没有这个属性,或者属性类型不符合要求。 - 解决步骤:
- 打开
Order类,添加对应的集合导航属性:public virtual ICollection<OrderItem> OrderItems { get; set; } = new List<OrderItem>(); - 确认
Order类中的OrderItems是有效的集合导航(用virtual修饰,类型为ICollection<OrderItem>),确保和OrderItem.Order的反向配置匹配。 - 同时检查
License和RequestLicense类,确认它们各自存在名为OrderItem的导航属性,否则分部类里的这两个[InverseProperty]也会引发类似错误。
- 打开
内容的提问来源于stack exchange,提问作者Mrbanad
相关产品推荐
相关产品推荐

