使用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如何跟踪其缓存中的对象,将更新发布回底层数据存储,并将相关对象链接在一起:
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"(仅限类型&艺术家)/