2017-01-15 104 views
1

错误消息数据访问MVC是:错误使用实体框架

无效的列名“雇员” 无效的列名“雇员” 无效列名称“城市”。

{ 
    EmployeeContext employeeContext = new EmployeeContext(); 
    Employee employee = employeeContext.Employees.Single(emp => emp.EmployeeId == id); //This line is causing the error 
} 

但我得到完全相同的数据库表中的所有匹配的列,为什么说我有无效列?我哪里做错了?我使用codeFirst方法,实际上表中有四列是EmployeeID,Name,Gender,City,我如何在名称和性别中没有错误,但是在EmployeeID和City中只有错误?并且EmployeeID中的错误出现两次?

详细代码

Employee类:

namespace MVCDemo.Models 
{ 
    public class Employee 
    { 
     public int EmployeeId { get; set; } 
     public string Name { get; set; } 
     public string Gender { get; set; } 
     public string City { get; set; } 
    } 
} 

EmployeeContext:

namespace MVCDemo.Models 
{ 
    [Table("tblEmployee")] 
    public class EmployeeContext : DbContext 
    { 
     public DbSet<Employee> Employees { get; set; } 
    } 
} 

数据库表: enter image description here

+0

你认为你连接了哪个数据库?你在使用DatabaseFirst还是CodeFirst方法? – MadOX

+0

显示您的EmployeeContext和Employee模型代码。 – abdul

+0

@abdul将它添加到我的文章已经 – grooveline

回答

2

你为什么用[Table(“tblEmployee”)]装饰EmployeeContext?如果你用Employee类来做,那对吗?

[Table("tblEmployee")] 
public class Employee 
{ 
    public int EmployeeId { get; set; } 
    public string Name { get; set; } 
    public string Gender { get; set; } 
    public string City { get; set; } 
} 
+0

哎哟,我的错,问题解决了,非常感谢 – grooveline

0

什么,我认为是:

EmployeeContext employeeContext = new EmployeeContext(); 

该行针对本地数据库服务器创建上下文。请确保你给正确的连接字符串作为参数:

EmployeeContext employeeContext = new EmployeeContext(connection-string); 

连接字符串应该取决于你工作项目的web.config或app.config中采取

+0

我想我得到了正确的本地databse服务器在web.config中,如果我更改databasename我得到了另一个不同的错误,如无效对象的东西,但现在我得到无效的列 – grooveline

+0

是dbFirst或codeFirst方法? – MadOX

+0

这是代码第一的方法。实际上,表中有四列是EmployeeID,Name,Gender,City,我如何在名称和性别中没有错误,但在EmployeeID和City中只有错误? – grooveline

0

您提供的细节不足以理解你的问题。首先确保您已正确连接到数据库。其次,如果City是您实体类中的导航属性,那么您可能缺少“Include”方法。