我第一次使用代码优先方法制作我的项目,当我使用数据库优先方法创建项目时,我从未见过这个错误弹出。
我知道这里有很多这些错误,但我已经检查过了,似乎我需要有人向我解释我的特定示例中有什么问题,以便我很好地理解它。
错误
LINQ to Entities 不支持指定的类型成员“项目”。仅支持初始化程序、实体成员和实体导航属性。
说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.NotSupportedException:LINQ to Entities 不支持指定的类型成员“项目”。仅支持初始化程序、实体成员和实体导航属性。
什么导致错误
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
使用代码优先的东西,但我认为我在代码上做错了,因为它应该是可能的。请帮忙,我该怎么做才能完成这项工作?