我在我的项目中使用EF6。我有抽象类“动物”和两个类,它继承它:猫和狗。
作为继承策略,我想使用TPC(每个具体的表),我的DbContext如下所示
public class AnimalDbContext: DbContext
{
public DbSet<Animal> Animals { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Cat>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("Cats");
});
modelBuilder.Entity<Dog>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("Dogs");
});
}
}
此代码在我的数据库中创建正确的表。我的问题是如何从Cat或Dog表中读取数据?在我的AninamDbContext对象中,我没有Cats或Dogs属性。
using (var db = new AnimalDbContext)
{
//how can I there read from db I cats?
}
答案 0 :(得分:2)
您是否尝试过以下操作?
using (var db = new AnimalDbContext)
{
var cats = db.Animals.OfType<Cat>().ToArray();
// Or when you want to get animals of multiple types
var catsAndDogs = db.Animals.Where(a => a is Cat|| a is Dog).ToArray();
}