私はかなり基本的な親子関係の設定をしています。結果として、ASP.NET MVC WebAPIを介してJSONとして結果のテーブルを返すことができるようになりたいということです。 Entity Framework 5.0 Beta 2を使用しています。
簡単な例で、私が遭遇したエラーを実証することができます。対応するデータコンテキストを持つCategory
とProduct
を考えます。
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
含まれるように列やクエリを設定する正しい方法は何ですか?
子コレクションプロパティは、 IEnumerable<T>
ではなく、 ICollection<T>
として宣言する必要があります。
また、 CategoryId
フィールドを子クラスに明示的に追加する必要もありません。 EFはそれをデータベースに自動的に作成します。