私はEFを初めて使用し、このチュートリアルTableA's
に従って、以下のようにベースコールIDをプライマリおよび外部キーとして持つようにコードファーストクラスを設定しましたTableB
:
[Table("TableA")]
public abstract class TableA
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string Description { get; set; }
}
[Table("TableB")]
public class TableB: TableA
{
[Key]
public int ID { get; set; }
public int Width { get; set; }
}
クエリを実行するときのコントローラーで:
var a = db.TableB.ToList();
tableB ID に対して 0 を取得します。しかし、デバッグ中に、適切な ID を持つ基本クラスを確認できます。そのため、ループを実行し、その中で を使用して ID を割り当てましitem.ID = ((TableA)(item)).ID;
た。
上記は ID を割り当てて自分のビューで確認できるように機能しますが、これは正しい方法ですか? 他の解決策はありますか?
編集: ここにdbcontextがあります:
public class Context : DbContext
{
public ProductContext()
: base("DefaultConnection")
{
}
public DbSet<TableA> TableA { get; set; }
public DbSet<TableB> TableB { get; set; }
}