如何在Code First中使用重命名的表?

时间:2016-01-12 11:44:28

标签: c# entity-framework

我的数据库中有一个表tbl_Employee,我希望使用Entity Framework在视图中显示。

员工控制器类

namespace MVCDemo.Controllers
{
    public class EmployeeController : Controller
    {

        public ActionResult Index()
        {
            EmployeeContext emp = new EmployeeContext();
               List<Employee> empList = emp.Employees.ToList();
            return View();
        }
    }
}

抛出错误说EmployeeContext不包含&#34; Employees&#34;的任何定义。但我在Emlpoyee Context类中创建了一个DbSet属性

这是代码

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

我认为它可能与Employee模型类中的[Table]属性有关:

namespace MVCDemo.Models
{
    [Table("tbl_Employee")]
    public class Employee
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int Salary { get; set; }
    }
}

这是我在编译时遇到的错误

错误1&#39; MVCDemo.EmployeeContext&#39;不包含&#39;员工的定义&#39;没有延伸方法&#39;员工&#39;接受类型&#39; MVCDemo.EmployeeContext&#39;的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)

2 个答案:

答案 0 :(得分:1)

你必须放置:DbSet。

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

在此示例中,您的实体是Employees,因此您必须将DbSet声明为DbSet<Employees>

答案 1 :(得分:0)

您必须提供强类型的类名:

public DbSet<Employee> Employees { get; set; }

Table将指定数据库中表的名称。 more info

您还可以使用流畅的API:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  modelBuilder.Entity<Employee>().ToTable("tbl_Employee");
}