使用实体框架

时间:2017-01-15 10:18:08

标签: c# sql-server asp.net-mvc entity-framework

错误信息是:

  

无效的列名称'EmployeeId'   列名称“EmployeeId”无效   列名称“城市”无效。

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

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

详细代码

员工类:

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

3 个答案:

答案 0 :(得分: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; }
}

答案 1 :(得分:0)

我的想法是:

EmployeeContext employeeContext = new EmployeeContext();

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

EmployeeContext employeeContext = new EmployeeContext(connection-string);

根据您正在使用的项目,应从web.config或app.config中获取连接字符串。

答案 2 :(得分:0)

您提供的详细信息不足以理解您的问题。首先确保您已正确连接到数据库。其次,如果City是您实体类中的导航属性,那么您可能会遗漏&#34; 包含&#34;方法