EntitySet' SelectListItems'基于类型' SelectListItem'没有定义键的

时间:2017-06-14 10:01:37

标签: c# asp.net-mvc razor

控制器

 public JsonResult menulist()
        {
            try
            {
                if (Session["User_Type"].ToString() != null)
                {
                    var menu = db.menuitems.ToList().Where(d => d.HasAccess.Contains(Session["User_Type"].ToString())).OrderBy(d=>d.Name);
                    return new JsonResult { Data = menu, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
                }
                return new JsonResult { Data = "", JsonRequestBehavior = JsonRequestBehavior.AllowGet };
            }
            catch (Exception ex)
            {
                return new JsonResult { Data = "", JsonRequestBehavior = JsonRequestBehavior.AllowGet };
            }
        }

模型

public class MenuItem
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        [Key]
        public int MenuItemId { get; set; }
        public string Name { get; set; }
        public string ActionName { get; set; }
        public string ControllerName { get; set; }
        public string Url { get; set; }
        public bool Disable { get; set; }
        public string HasAccess { get; set; }
        public int ParentMenuId { get; set; }
    }

上下文

public DbSet<MenuItem> menuitems { get; set; }

我的数据库中有自动生成的MenuItemId字段,所以我在模型中将其定义为键和标识。我仍然收到Key not defined和&#39; SelectListItem&#39;的错误没有定义键。

错误

  

在模型生成期间检测到一个或多个验证错误:   Demo.Context.SelectListItem :: EntityType&#39; SelectListItem&#39;没有定义键。定义此EntityType的键。   SelectListItems:EntityType:EntitySet&#39; SelectListItems&#39;基于类型&#39; SelectListItem&#39;没有定义键。

1 个答案:

答案 0 :(得分:0)

你能尝试一下吗?

var menu = db.menuitems.Where(d => d.HasAccess.Contains(Session["User_Type"].ToString())).OrderBy(d=>d.Name).ToList();