如何让Entity Framework查询正确的表?

时间:2012-08-23 18:28:52

标签: c# asp.net-mvc-3 entity-framework

我已经定义了一个类

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

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

我做错了什么?

2 个答案:

答案 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表中获取数据。