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

メソッドをオーバーライドして、OnMoedlCreateingこのクラスをfluent APIを使用して別のテーブルにマップするように EF に指示します。そのメソッドを DBContext クラスに追加します

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

ReportClassesこれにより、DbContxt オブジェクトのプロパティをクエリするReportClassRealTableと、データベース内のテーブルからデータがフェッチされることが EF に通知されます。

于 2012-08-23T18:32:56.697 に答える