1

私は初めてコードファーストアプローチを使用してプロジェクトを作成していますが、データベースファーストアプローチを使用してプロジェクトを作成しているときにこのエラーがポップアップするのを見たことがありません。

ここにこれらのエラーがたくさんあることは知っていますが、私はそれらをチェックしました。私がそれをよく理解するには、私の特定の例の何が悪いのかを誰かに説明してもらう必要があるようです。

エラー

指定されたタイプメンバー'Items'は、LINQtoEntitiesではサポートされていません。初期化子、エンティティメンバー、およびエンティティナビゲーションプロパティのみがサポートされます。

説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとエラーがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。

例外の詳細:System.NotSupportedException:指定されたタイプメンバー'Items'は、LINQtoEntitiesではサポートされていません。初期化子、エンティティメンバー、およびエンティティナビゲーションプロパティのみがサポートされます。

エラーの原因

public dynamic List()
{
    var categories = db.Categories.OrderByDescending(x => x.CreatedDateTime).Select(x => new
    {
        ID = x.ID,
        Name = x.Name,
        RootCategoryName = x.RootCategory.Name,
        ItemCount = x.Items.Count() // This line
    });

    return Json(categories, JsonRequestBehavior.AllowGet);
}

アイテムモデル

public class Item
{
    public int ID { get; set; }

    public int CategoryID { get; set; } // Seems like here I've done everything correctly
    public Category Category { get; set; } // Seems like here I've done everything correctly

    [Required]
    public string Name { get; set; }
    public string Info { get; set; }

    public bool? IsAccessory { get; set; }
    public int? RootItemID { get; set; }
    public Item RootItem { get; set; }
}

カテゴリモデル

public class Category
{
    public int ID { get; set; }

    public int? RootCategoryID { get; set; }
    public Category RootCategory { get; set; }

    [Required]
    public string Name { get; set; }
    public string Info { get; set; }

    public IQueryable<Item> Items { get; set; } // Here also it seems that I've done relations correctly

    public DateTime CreatedDateTime { get; set; }
    public DateTime ModifiedDateTime { get; set; }
}

一見、コードファーストのようなものを呼び出すことは不可能Category.Items.Count()Item.Category.Name思えますが、コードは可能であるはずなので、コードに何か問題があったと思います。助けてください、私はこの仕事をするために何をすべきですか?

4

1 に答える 1

4

Category.ItemsICollection<Item>の代わりにタイプである必要がありますIQueryable<Item>

于 2012-09-29T15:53:04.010 に答える