属性 '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)
然后使用列表访问标签 属性。
我正在尝试从 [=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)
然后使用列表访问标签 属性。