无法在添加控制器进程上检索元数据错误

时间:2017-12-17 00:13:49

标签: c# asp.net-mvc

我目前正在开发一个MVC Asp.net 5项目。我正在使用代码优先设计。这是我的TrackerModels文件。

public class TrackerModels : DbContext
{
    public TrackerModels()
        : base("name=TrackerModels")
    {
    }

    public System.Data.Entity.DbSet<ProjectTracker.Models.Project> Projects { get; set; }
}

public class Project
{
    [Key]
    public int Id { get; set; }

    [Display(Name = "Project")]
    [Required]
    public string ProjectName { get; set; }
}

public class Group
{
    [Key]
    public int Id { get; set; }

    [Display(Name = "Group Name")]
    [Required]
    public string GroupName { get; set; }

    [ForeignKey("ProjectId")]
    [Required]
    public virtual Project ProjectId { get; set; }
}

这是我的连接字符串

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-ProjectTracker-20171207081108.mdf;Initial Catalog=aspnet-ProjectTracker-20171207081108;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="TrackerModels" connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=ProjectTracker.Models.TrackerModels;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

我正在尝试制作一个控制器。请参阅下面的我正在使用的设置。

Add Controller Dialog

但是在自动生成部分正在进行中我收到以下错误

Controller Creation Error

我一直在这里搜索论坛,但我没有找到与此错误完全匹配的内容。然而,即使是类似的问题及其相应的修复程序也不适用于我。这包括添加Key属性,DbSet等。

任何帮助都会受到赞赏以及任何可以让我们了解为什么会发生这种情况的好网站/资源。

更新1 我将我的组类重构为以下内容,但仍然会收到相同的错误消息。

public class Group
{
    [Key]
    public int Id { get; set; }

    [Display(Name = "Group Name")]
    [Required]
    public string GroupName { get; set; }

    [Required]
    public int ProjectId { get; set; }


    [ForeignKey("ProjectId")]
    public virtual Project Project{ get; set; }
}

更新2 事实证明我必须重新启动VS,以便它不会出现上述修复错误。重启VS后,现在正在运行。

1 个答案:

答案 0 :(得分:0)

您的外键应为int。按如下方式重组您的Group课程:

public class Group
{
    [Key]
    public int Id { get; set; }

    [Display(Name = "Group Name")]
    [Required]
    public string GroupName { get; set; }

    [Required]
    public int ProjectId { get; set; }

    [ForeignKey("ProjectId")]
    public virtual Project Project { get; set; }
}