2012-04-06 14 views
8

私はかなり基本的な親子関係設定をしています。最終的な結果は、結果のテーブルをASP.NET MVC WebAPIを通じてJSONとして返すことができるようにすることです。私はエンティティフレームワーク5.0ベータ2を使用しています。「指定されたインクルードパスが無効です」とはどのように解決するのですか?

私は簡単な例で実行中のエラーを示すことができます。私は次のエラーを取得する製品を含むクエリを実行しようとすると

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; } 
} 

:対応するデータコンテキストを持つクラスCategoryProduct考える

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

フェッチする文は非常に簡単です:ProductsがINCLUDされるように設定する正しい方法は、カラムおよび/またはクエリで何

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

Categoriesで編集しましたか?

答えて

33

子コレクションのプロパティは、の子であり、IEnumerable<T>ではなく、ICollection<T>と宣言する必要があります。

また、CategoryIdフィールドを子クラスに明示的に追加する必要はありません。 EFはそれを自動的にデータベースに作成します。

+0

美容、ありがとうSLaks。 – MisterJames

+0

あなたが刺す気になれば、私はここに関連する質問を掲載しました:http://stackoverflow.com/questions/10038628/error-when-serializing-ef-code-first-5-0-data-in-webapi-コントローラありがとうございました! – MisterJames

+0

迅速で正確な答えです。どうも! –

関連する問題