C# 通过TPC策略通过EntityFramework从DB获取数据

C# 通过TPC策略通过EntityFramework从DB获取数据,c#,.net,entity-framework,orm,entity-framework-6,C#,.net,Entity Framework,Orm,Entity Framework 6,我在我的项目中使用EF6。我有抽象类“Animal”和两个类,它们由它继承:Cat和Dog 作为继承策略,我希望使用TPC(每个具体表),我的DbContext如下所示 public class AnimalDbContext: DbContext { public DbSet<Animal> Animals { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuild

我在我的项目中使用EF6。我有抽象类“Animal”和两个类,它们由它继承:Cat和Dog

作为继承策略,我希望使用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");
        });
    }
}

你试过以下方法吗

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();
}
使用(var db=newanimaldbcontext)
{
var cats=db.anists.OfType().ToArray();
//或者当你想得到多种动物的时候
var catsAndDogs=db.anists.Where(a=>a是猫| | a是狗)。ToArray();
}
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();
}