Я новичок в EF и в соответствии с этим tutorial я настроил мой код-первых классов, чтобы иметь базу вызовов TableA's
ID в качестве первичного и внешнего ключа для TableB
, как показано ниже:Entity Framework Наследование Code First
[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();
Я получаю 0 для идентификаторов tableB. Но во время отладки я вижу базовый класс с соответствующими идентификаторами. поэтому я сделал цикл и внутри него назначил идентификаторы, используя item.ID = ((TableA)(item)).ID;
.
Вышеупомянутые работы, как и в нем, присваивают идентификаторы, чтобы я мог видеть их на мой взгляд, но это правильный способ сделать это? Есть ли другие решения?
EDIT: Вот DbContext:
public class Context : DbContext
{
public ProductContext()
: base("DefaultConnection")
{
}
public DbSet<TableA> TableA { get; set; }
public DbSet<TableB> TableB { get; set; }
}
Можете ли вы показать свою DbContext? –
@WouterdeKort, пожалуйста, см. Мое редактирование – Zaki