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

问题描述:

我有一个相当基本的亲子关系设置。最终结果是我希望能够通过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是includ编辑Categories

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

此外,您不需要明确地将CategoryId字段添加到子类; EF将在数据库中自动创建它。

+0

美丽,谢谢SLaks。 – MisterJames 2012-04-06 01:17:57

+0

我在这里发布了一个相关的问题,如果你关心刺伤:http://*.com/questions/10038628/error-when-serializing-ef-code-first-5-0-data-in-webapi-控制器感谢您的帮助,否则! – MisterJames 2012-04-06 03:04:24

+0

快速准确的答案。谢谢! – 2015-09-25 17:45:31