0

我已经定义了一个类

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; }
}

但它仍在查询不存在的表。

我究竟做错了什么?

4

2 回答 2

7

像这样使用 table 属性:

[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 你的类的实际表名是什么,否则它会尝试使用你的类名的复数形式。

于 2012-08-23T18:30:19.210 回答
2

让它保持原样

public DbSet<ReportClass> ReportClasses { get; set; }

现在覆盖该方法以告诉 EF 使用fluent APIOnMoedlCreateing将此类映射到不同的表。将该方法添加到您的 DBContext 类

public class ReportClassContext : DbContext
{
    public DbSet<ReportClass> ReportClasses { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
      modelBuilder.Entity<ReportClass>().ToTable("ReportClassesRealTable");
    }
}

这告诉 EF,当您查询ReportClassesDbContxt 对象的属性时,它将从ReportClassRealTable数据库中的表中获取数据。

于 2012-08-23T18:32:56.697 回答