在MVC核心中搭建控制器时未找到主键

coo*_*and 1 c# asp.net-core-mvc

尝试脚手架控制器时,我收到以下错误:

"运行所选代码生成器时出错:'实体类型'Company.Models.Office'需要在Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.b_6-0()中定义主键.

我是MVC Core的新手,但我的理解是主键默认定义为ID或classnameID.我还尝试添加[Key]属性并将主键重命名为OfficeID.我已经与另一个类进行了类似的过程,并没有遇到这个问题

public class Office
    {
        public int ID;
        public string Name;
        public int SiteID;

    }
Run Code Online (Sandbox Code Playgroud)

小智 7

我不确定这是否能解决您的问题,但可能会尝试以下方法.这听起来与你刚才描述的类似,不过我发布它只是为了确定.

public class Office
{
    [Key]
    public int OfficeID { get; set; }
    public string Name { get; set; }
    public int SiteID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

您应该知道,调用主键并不重要.但是,为了方便和遵循标准,您应该将其称为"ID"或表/类名称加上"ID".

此外,您是否尝试重新启动Visual Studio和PC?有时我发现这是解决一些编译时错误的唯一方法.

  • 一旦我添加`{get; 组; }`然后,脚手架对我来说就像一种魅力。 (2认同)

小智 5

我在 Asp net core Mvc 中搭建脚手架时遇到了类似的问题。将此添加到您的 Dbcontext 文件可能会有所帮助!!

protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);
                modelBuilder.Entity<Office>(entity =>
                {
                    entity.HasKey(x=>x.OfficeID);

                });
            }
Run Code Online (Sandbox Code Playgroud)