Asp.net mvc 4 ASP.NET MVC/EF代码第一个错误:无法检索模型的元数据

Asp.net mvc 4 ASP.NET MVC/EF代码第一个错误:无法检索模型的元数据,asp.net-mvc-4,ef-code-first,Asp.net Mvc 4,Ef Code First,我试图在MVC4中创建一个控制器,但我遇到了一个错误,我不明白我是MVC新手。它表示无法检索“CIT.ViewModels.DashboardViewModel”的元数据。。。然后给出了两个可能的问题。一个是DashboardViewModel没有定义键。另一个是EntitySet“DashboardViewModels”没有定义键 我为DashboardViewModel定义了一个键,但这并没有解决问题。这是我的仪表板视图模型 public class DashboardViewModel

我试图在MVC4中创建一个控制器,但我遇到了一个错误,我不明白我是MVC新手。它表示无法检索“CIT.ViewModels.DashboardViewModel”的元数据。。。然后给出了两个可能的问题。一个是DashboardViewModel没有定义键。另一个是EntitySet“DashboardViewModels”没有定义键

我为DashboardViewModel定义了一个键,但这并没有解决问题。这是我的仪表板视图模型

public class DashboardViewModel
    {

        public DashboardViewModel() { }

        [Key]
        public int Id { get; set; }
        public Hardware Hardware { get; set; }
        public Software Software { get; set; }
        public HardwareType HardwareType { get; set; }
        public Manufacturer Manufacturer { get; set; }
        public SoftwarePublisher SoftwarePublisher { get; set; }


    }
正如您所看到的,它由类组成。我这样做是为了可以从同一个视图访问多个类。我认为它不需要钥匙,但我加了一把,这并没有解决问题。另一个错误听起来像是在为DashboardViewModels寻找数据库集。据我所知,您的数据库集就是您的表。我不想要或不需要仪表板视图模型表。我这样做只是为了在视图中可以访问多个表/类。到目前为止,这一切都很顺利

当我尝试创建控制器时,我使用仪表板视图模型作为我的模型,使用上下文作为我的上下文。以下是我的背景:

public class Context : DbContext
    {
        public DbSet<Software> Softwares { get; set; }
        public DbSet<Location> Locations { get; set; }
        public DbSet<SoftwarePublisher> SoftwarePublishers { get; set; }
        public DbSet<SoftwareType> SoftwareTypes { get; set; }
        public DbSet<Hardware> Hardwares { get; set; }
        public DbSet<Manufacturer> Manufacturers { get; set; }
        public DbSet<HardwareType> HardwareTypes { get; set; }
 }

如何解决这些错误

张贴控制器代码。EF不应该以任何方式关心您的视图模型。由于错误,我无法创建控制器。这就是问题所在。我认为您混淆了视图和域实体。您的实体代表您的数据库,而您的视图只是实体的抽象,可以读取数据库。如何解决错误?