繁体   English   中英

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

[英]EntityType 'Worker' has no key defined. Define the key for this EntityType

我的代码在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 Controller with views, using Entity Framework”和配置的控制器时

  • 模型类: Worker (Solution.Models)
  • 数据上下文类: WorkerDbContext (Solution.Models)
  • 控制器名称: WorkersController

我收到一条错误消息说

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

有什么建议可以做什么或我做错了什么?

模型的属性之一应该是 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]属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM