属性 'a' 不是实体类型 'b' 的导航 属性。为什么不?

The property 'a' is not a navigation property of entity type 'b'. Why not?

我正在尝试从 [=18] 加载产品标识符列表 Label(即产品标识符的名称,例如 "EAN"、"Product number" 等) =] 这个查询:

ICollection<ProductIdentifierInType> typeIds =
            _context.ProductIdentifiersInTypes
            .Include(t => t.Identifier.Label)
            .OrderBy(o => o.SortOrder).ToList();

VS 为我提供 t.Identifier.Label 的智能感知。该解决方案编译得很好。这是我得到的运行时错误:

InvalidOperationException: The property 'Label' is not a navigation property of entity type 'ProductIdentifier'. The 'Include(string)' method can only be used with a '.' separated list of navigation property names.

以下是相关型号类:

public class ProductIdentifierInType
{
    public int Id { get; set; }
    public int ProductTypeId { get; set; }
    public int SortOrder { get; set; }

    public ProductIdentifier Identifier { get; set; }
    public ProductType Type { get; set; }
}

public class ProductIdentifier
{
    public int Id { get; set; }
    public string Label { get; set; }
    public int SortOrder { get; set; }

    public ICollection<ProductIdentifierInType> TypeIdentifiers { get; set; }
}

我的 DbContext:

public class MyStoreContext : DbContext // IdentityDbContext
{
    public MyStoreContext(DbContextOptions options) : base(options) { }

    // some unrelated tables ...

    public DbSet<ProductIdentifierInType> ProductIdentifiersInTypes { get; set; }
    public DbSet<ProductIdentifier> ProductIdentifiers { get; set; }

    // some more, unrelated tables ...
}

我试过从 IdentityDbContext 继承,就像 中的解决方案一样,但这没有任何区别。

怎么了?

正如评论中所指出的,Include 仅用于导航 属性。

而不是 .Include(t => t.Identifier.Label) 尝试只做 .Include(t => t.Identifier)

然后使用列表访问标签 属性。