我正在尝试使用此查询从Label
加载产品标识符ProductIdentifiers
列表(即产品标识符的名称,例如“EAN”,“产品编号”等) :
ICollection<ProductIdentifierInType> typeIds =
_context.ProductIdentifiersInTypes
.Include(t => t.Identifier.Label)
.OrderBy(o => o.SortOrder).ToList();
VS给了我t.Identifier.Label
的智能感知。解决方案编译得很好。这是我得到的运行时错误:
InvalidOperationException:属性“Label”不是实体类型“ProductIdentifier”的导航属性。 'Include(string)'方法只能与'。'一起使用。分隔的导航属性名称列表。
以下是相关的模型类:
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
,就像this question中的解决方案一样,但这没有任何区别。
有什么问题?
答案 0 :(得分:5)
正如评论中所指出的,Include仅适用于Navigation属性。
而不是.Include(t => t.Identifier.Label)
尝试只执行.Include(t => t.Identifier)
然后使用List访问Label属性。