如何在“代码优先”中使用重命名的表

本文关键字:重命名 代码优先 代码 | 更新日期: 2023-09-27 18:29:54

我的数据库中有一个表tbl_Employee,我想使用实体框架在视图中显示它。

员工控制器类

namespace MVCDemo.Controllers
{
    public class EmployeeController : Controller
    {
        public ActionResult Index()
        {
            EmployeeContext emp = new EmployeeContext();
               List<Employee> empList = emp.Employees.ToList();
            return View();
        }
    }
}

它抛出了一个错误,说EmployeeContext不包含任何"Employees"的定义,但我在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"MVCDemo.EmployeContext"不包含"employees"的定义,也找不到接受第一个"MVCDdemo.EmploysContext"类型参数的扩展方法"employmes"(是否缺少using指令或程序集引用?)

如何在“代码优先”中使用重命名的表

您必须放置:DbSet。

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

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

您必须提供强类型类名:

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

Table将指定数据库中表的名称。更多信息

您也可以使用流利的API:

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