如何解决“指定的包含路径无效”?

时间:2012-04-06 01:09:38

标签: entity-framework ef-code-first

我有一个非常基本的父子关系设置。最终结果是我希望能够通过ASP.NET MVC WebAPI将结果表作为JSON返回。我正在使用Entity Framework 5.0 beta 2.

我可以用一个简单的例子来演示我遇到的错误。给定具有相应数据上下文的类CategoryProduct

public class Category
{
    public int CategoryId { get; set; }
    public string Title { get; set; }

    public virtual IEnumerable<Product> Products { get; set; }
}

public class Product
{
    public int ProductId { get; set; }
    public string Title { get; set; }

    public virtual Category Category { get; set; }
    public virtual int CategoryId { get; set; }
}

public class ProductDataContext : DbContext
{
    public DbSet<Category> Categories { get; set; }
    public DbSet<Product> Products { get; set; }
}

当我尝试运行包含产品的查询时,我收到以下错误:

A specified Include path is not valid. The EntityType 'FooAndBar.Category' 
does not declare a navigation property with the name 'Products'.

要获取的语句非常简单:

var everything = dc.Categories
            .Include(c => c.Products);

设置列和/或查询的正确方法是什么,以便Products包含Categories

1 个答案:

答案 0 :(得分:34)

子集合属性必须声明为ICollection<T>,而不是IEnumerable<T>

此外,您不需要向子类显式添加CategoryId字段; EF将在数据库中自动创建。