我第一次使用代码优先方法制作我的项目,当我使用数据库优先方法创建项目时,我从未见过这个错误。
我知道这里有很多这些错误,但是我已经检查了它们,似乎我需要有人向我解释我的具体例子中有什么问题让我理解它。
LINQ to不支持指定的类型成员'Items' 实体。仅初始化程序,实体成员和实体导航 支持属性。
描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
异常详细信息:System.NotSupportedException:指定的类型 LINQ to Entities不支持成员'Items'。只要 初始化器,实体成员和实体导航属性是 支撑。
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
这样的东西是不可能的,但我认为我做错了代码,因为它应该是可能的。请帮助,我该怎么做才能使这项工作?
答案 0 :(得分:4)
Category.Items
应为ICollection<Item>
类型,而不是IQueryable<Item>