Entity framework EF核心包括多个继承类型TPH 问题
查询基类并包含派生类型的信息。 例如:基类Offer有两种类型,一种是只带一张卡的(cardoefor),另一种是带多张卡的(CarouselOffer) 问题:如何查询基类并包含来自派生类型CardOffer和CarouselOffer的信息?以如下所示的方式: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
_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);
当前不受支持。带来