使用EF为模型创建控制器(无键错误)

本文关键字:错误 控制器 EF 模型 创建 使用 | 更新日期: 2023-09-27 18:07:05

我试图基于以下模型创建一个带有脚手架的控制器(没有先前创建的上下文,但我选择了将其与控制器一起创建的选项):

namespace MvcMusicStorePractice.Models
{
    public class Album
    {     
        public virtual int AlbumId { get; set; }
        public virtual int GenreId { get; set; }
        public virtual int ArtistId { get; set; }
        public virtual string Title { get; set; }
        public virtual decimal Price { get; set; }
        public virtual string AlbumArtUrl { get; set; }
        public virtual Genre Genre { get; set; }
        public virtual Artist Artist { get; set; }
    }
}

但是我一直得到以下错误:

Album::EntityType 'Album'没有键定义。为EntityType定义键

我尝试了以下解决方案:

  • 添加[Key]属性到AlbumId;
  • 将公共虚拟int AlbumId更改为公共int Id。

它仍然不起作用。有人知道是什么问题吗?

使用EF为模型创建控制器(无键错误)

为了使用实体框架,每个实体都需要一个键。这就是EF如何跟踪其缓存中的对象,将更新发布回底层数据存储,并将相关对象链接在一起:

namespace MvcMusicStorePractice.Models
{ 
    public class Album
    {   
        [Key]
        public int AlbumId { get; set; }
        public int GenreId { get; set; }
        public int ArtistId { get; set; }
        public string Title { get; set; }
        public decimal Price { get; set; }
        public string AlbumArtUrl { get; set; }
        public virtual Genre Genre { get; set; }
        public virtual Artist Artist { get; set; }
    }
}

注意[key]注释,它将使该字段为PK。

还要确保只对外来对象使用"Virtual"(仅限类型&艺术家)/