如何在“代码优先”中使用重命名的表
本文关键字:重命名 代码优先 代码 | 更新日期: 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");
}