通过TPC策略从Entity Framework获取数据

时间:2013-11-24 17:36:10

标签: c# .net entity-framework orm entity-framework-6

我在我的项目中使用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?
}

1 个答案:

答案 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();
}