Entity framework EF核心包括多个继承类型TPH 问题

Entity framework EF核心包括多个继承类型TPH 问题,entity-framework,ef-code-first,entity-framework-core,ef-core-2.0,Entity Framework,Ef Code First,Entity Framework Core,Ef Core 2.0,查询基类并包含派生类型的信息。 例如:基类Offer有两种类型,一种是只带一张卡的(cardoefor),另一种是带多张卡的(CarouselOffer) 问题:如何查询基类并包含来自派生类型CardOffer和CarouselOffer的信息?以如下所示的方式: _dbContext.Offers.Include(...).ToList(); 目前,我通过查询每个继承的类型来解决这个问题 var cards = await _dbContext.CardOffers

查询基类并包含派生类型的信息。

例如:基类Offer有两种类型,一种是只带一张卡的(cardoefor),另一种是带多张卡的(CarouselOffer

问题:如何查询基类并包含来自派生类型CardOffer和CarouselOffer的信息?以如下所示的方式:

    _dbContext.Offers.Include(...).ToList();
目前,我通过查询每个继承的类型来解决这个问题

        var cards = await _dbContext.CardOffers
            .Include(c => c.Card)
            .ToListAsync();

        var carousels = await _dbContext.CarouselOffers
            .Include(c => c.Cards)
            .ToListAsync();
        
        List<Offer> offers = new List<Offer>();
        offers.AddRange(cards);
        offers.AddRange(carousels);
CardOffer等级:

public class CardOffer : Offer
{
    public Card Card { get; set; }
}
public class CarouselOffer : Offer
{
    public ICollection<Card> Cards { get; set; }
}
public class Card
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    
    public string Title { get; set; }
    
    public string ImageUrl { get; set; }
    
    public string Description { get; set; }
    
    public string Category { get; set; }
    
    public ICollection<Button> Buttons { get; set; }
}
旋转木马等级:

public class CardOffer : Offer
{
    public Card Card { get; set; }
}
public class CarouselOffer : Offer
{
    public ICollection<Card> Cards { get; set; }
}
public class Card
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    
    public string Title { get; set; }
    
    public string ImageUrl { get; set; }
    
    public string Description { get; set; }
    
    public string Category { get; set; }
    
    public ICollection<Button> Buttons { get; set; }
}
公共类旋转木马:提供
{
公共ICollection卡{get;set;}
}
卡片类别:

public class CardOffer : Offer
{
    public Card Card { get; set; }
}
public class CarouselOffer : Offer
{
    public ICollection<Card> Cards { get; set; }
}
public class Card
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    
    public string Title { get; set; }
    
    public string ImageUrl { get; set; }
    
    public string Description { get; set; }
    
    public string Category { get; set; }
    
    public ICollection<Button> Buttons { get; set; }
}
公共类卡
{
[数据库生成(DatabaseGeneratedOption.Identity)]
公共int ID{get;set;}
公共字符串标题{get;set;}
公共字符串ImageUrl{get;set;}
公共字符串说明{get;set;}
公共字符串类别{get;set;}
公共ICollection按钮{get;set;}
}
弗伦塔皮:

        modelBuilder.Entity<ClientUser>()
            .HasMany(u => u.Offers)
            .WithOne(u => u.ClientUser)
            .OnDelete(DeleteBehavior.Cascade);
        
        modelBuilder.Entity<Offer>()
            .HasDiscriminator<string>("Discrimnator");

        modelBuilder.Entity<CardOffer>()
            .HasOne(u => u.Card);
        
        modelBuilder.Entity<CarouselOffer>()
            .HasMany(u => u.Cards);
modelBuilder.Entity()
.HasMany(u=>u.Offers)
.WithOne(u=>u.ClientUser)
.OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity()
.HasDiscriminator(“鉴别者”);
modelBuilder.Entity()
.HasOne(u=>u.Card);
modelBuilder.Entity()
.HasMany(u=>u.Cards);

当前不受支持。带来