2016-04-04 81 views
2

錯誤 - 在EntityFramework.dll中發生類型爲「System.Data.Entity.ModelConfiguration.ModelValidationException」的異常,但未處理用戶代碼 附加信息:在模型生成期間檢測到一個或多個驗證錯誤: MVCApplication.Models.Employee :: EntityType'Employee'沒有定義鍵。定義此EntityType的關鍵字。 僱員:EntityType:EntitySet'Employees'基於沒有定義鍵的'Employee'類型。EntityFramework.dll中發生類型爲「System.Data.Entity.ModelConfiguration.ModelValidationException」的異常

控制器代碼:

namespace MVCApplication.Controllers 
{ 
    public class EmployeeController : Controller 
    { 
     // GET: Employee 
     public ActionResult Detail(int id) 
     { 
      EmployeeContext employeecontext = new EmployeeContext(); 
      Employee emp = employeecontext.Employees.Single(x => x.Emp_Id ==id);//here its throwing an exception 
      return View("employee",emp); 
     } 
    } 

這是我的模範員工類:

namespace MVCApplication.Models 
{ 
    [Table("Employee")] 
    public class Employee 
    { 
     public int Emp_Id { get; set; } 
     public string Emp_Name { get; set; } 
     public string Designation { get; set; } 
     public string City { get; set; } 
     public string State { get; set; } 
     public string Country { get; set; } 
    } 
} 

這是我的員工上下文類:

namespace MVCApplication.Models 
{ 
    public class EmployeeContext : DbContext 
    { 
     public DbSet<Employee> Employees { get; set; } 
    } 
} 

回答

3

你必須屬性[Key]設爲您的模型,像這樣

[Table("Employee")] 
public class Employee 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [Key] 
    public int Emp_Id { get; set; } 
    public string Emp_Name { get; set; } 
    public string Designation { get; set; } 
    public string City { get; set; } 
    public string State { get; set; } 
    public string Country { get; set; } 
} 

僅當您的數據庫生成ids時才使用[DatabaseGenerated(DatabaseGeneratedOption.Identity)],如果不是,您只需要[Key]屬性。

+0

非常感謝宗介爲您的寶貴時間。它成功地解決了這個問題。非常感謝。 – Dilip

1

請確保您已設置自動遞增屬性「EMP_ID」列在你的數據庫表,你的模型應該是這樣的:

[Table("Employees")] 
public class Employee 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [Key] 
    public int Emp_Id { get; set; } 
    public string Emp_Name { get; set; } 
    public string Designation { get; set; } 
    public string City { get; set; } 
    public string State { get; set; } 
    public string Country { get; set; } 
} 
相關問題