2012-04-06 82 views
8

我有一個相當基本的親子關係設置。最終結果是我希望能夠通過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

回答

33

子集合屬性必須聲明爲ICollection<T>而不是IEnumerable<T>

此外,您不需要明確地將CategoryId字段添加到子類; EF將在數據庫中自動創建它。

+0

美麗,謝謝SLaks。 – MisterJames 2012-04-06 01:17:57

+0

我在這裏發佈了一個相關的問題,如果你關心刺傷:http://stackoverflow.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