12

かなり基本的な親子関係の設定があります。最終的な結果として、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ですか?

4

1 に答える 1

38

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

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

于 2012-04-06T01:16:41.883 に答える