我已经定义了一个类
public class ReportClass
{
public int ID { get; set; }
public int ClassIndex { get; set; }
public string ClassName { get; set; }
public int CompanyID { get; set; }
}
我设置了dbcontext。
public class ReportClassContext : DbContext
{
public DbSet<ReportClass> ReportClasses { get; set; }
}
当我第一次获取记录时,运行时告诉我数据库表不存在:我检查,我看到我的DbSet的名称与表不匹配。我将名称改为匹配:
public class ReportClassContext : DbContext
{
public DbSet<ReportClass> ReportClassesRealTable { get; set; }
}
但它仍在查询不存在的表格。
我做错了什么?
答案 0 :(得分:7)
使用像这样的表属性:
[Table("ReportClassesRealTable")]
public class ReportClass
{
public int ID { get; set; }
public int ClassIndex { get; set; }
public string ClassName { get; set; }
public int CompanyID { get; set; }
}
这告诉EF您的班级的实际表名是什么,否则它会尝试使用复数形式的班级名称。
答案 1 :(得分:2)
让它存在,因为它是
public DbSet<ReportClass> ReportClasses { get; set; }
现在超越OnMoedlCreateing
方法,告诉EF使用 fluent API 将此类映射到其他表。将该方法添加到DBContext类
public class ReportClassContext : DbContext
{
public DbSet<ReportClass> ReportClasses { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<ReportClass>().ToTable("ReportClassesRealTable");
}
}
这告诉EF,当您查询DbContxt对象的ReportClasses
属性时,它将从数据库中的ReportClassRealTable
表中获取数据。