EntityType'Worker'没有定义键。定义此EntityType的键

时间:2016-05-28 17:27:26

标签: c# .net entity-framework

我的代码位于Solution.Models.Worker

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace Solution.Models
{
    public class Worker
    { 
       public int AsmensKodas { get; set; }
       public string Vardas { get; set; }
       public string Pavarde { get; set; }
       public DateTime GimimoData { get; set; }
       public string Adresas { get; set; }
       public bool AktyvumoPozymis { get; set; } 
    }

    public class WorkerDBContext : DbContext
    {
        public DbSet<Worker> Worker { get; set; }
    }
}

我通过添加

更改了web.config文件
<connectionStrings>
    <add name="WorkerDBContext" 
         connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Workers.mdf;Integrated Security=True" 
         providerName="System.Data.SqlClient"/>
</connectionStrings>

当我尝试使用配置

添加带有视图的MVC 5控制器,使用实体框架的控制器时
  • 模型类:Worker(Solution.Models)
  • 数据上下文类:WorkerDbContext(Solution.Models)
  • 控制器名称:WorkersController

我收到一条错误消息

  

运行所选代码生成器时出错:
  '无法检索'Solution.Models.Worker'的元数据。在模型生成期间检测到一个或多个验证错误:
  Solution.Models.Worker :: EntityType'Worker'没有定义键。
  定义此EntityType的键   Workers:EntityType:EntitySet'Worker'基于类型'Worker',没有定义键。

有什么建议或我做错了吗?

1 个答案:

答案 0 :(得分:2)

Model的一个属性应该是Key。因此,将[Key]注释放在其中一个属性的顶部。像这样:

public class Worker
{ 
   [Key]
   public int AsmensKodas { get; set; }
   public string Vardas { get; set; }
   public string Pavarde { get; set; }
   public DateTime GimimoData { get; set; }
   public string Adresas { get; set; }
   public bool AktyvumoPozymis { get; set; } 

}

不要忘记将此行添加到您的using指令中:

using System.ComponentModel.DataAnnotations;

此外,如果您的Model中的商家名称为Id,则无需向其添加[Key]属性。