Entity Frameworkコア2.0を使用して、多態性の子エンティティに関連するデータを含めるクエリを作成しようとしています。例えばEntity Frameworkコア2.0で派生した子プロパティを含む
、次の種類の特定:
public class ParentEntity
{
public int Id { get; set; }
public IList<ChildEntityBase> Children { get; set; }
}
public abstract class ChildEntityBase
{
public int Id { get; set; }
}
public class ChildEntityA : ChildEntityBase
{
}
public class ChildEntityB : ChildEntityBase
{
public IList<GrandchildEntity> Children { get; set; }
}
public class GrandchildEntity
{
public int Id { get; set; }
}
と、次の構成:この、残念ながら
var result = this.serviceDbContext.ParentEntities
.Include(p => p.Children)
.ThenInclude((ChildEntityB b) => b.Children);
:
public DbSet<ParentEntity> ParentEntities { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<ParentEntity>().HasKey(p => p.Id);
builder.Entity<ParentEntity>().HasMany(p => p.Children).WithOne();
builder.Entity<ChildEntityBase>().HasKey(c => c.Id);
builder.Entity<ChildEntityBase>()
.HasDiscriminator<string>("ChildEntityType")
.HasValue<ChildEntityA>("a")
.HasValue<ChildEntityB>("b");
builder.Entity<ChildEntityA>()
.HasBaseType<ChildEntityBase>();
builder.Entity<ChildEntityB>()
.HasBaseType<ChildEntityBase>()
.HasMany(u => u.Children).WithOne();
builder.Entity<GrandchildEntity>()
.HasBaseType<ChildEntityBase>();
base.OnModelCreating(builder);
}
私は次のクエリを記述しようとしています構文エラーが発生しています。
しかし、私は、誰もが私が間違ってやってお勧めできますhttps://github.com/aspnet/EntityFrameworkCore/commit/07afd7aa330da5b6d90d518da7375d8bbf676dfd
に指定されている私は、構文を次のです信じますか?
ありがとうございました
それはそれを説明するでしょう。私がThen Then Multiquic Child Typesに適切にインクルードするために使用できる代替アプローチがありますか? – sandy
いいえ、それは問題です:(それらが提供されるまで、あなたは手作業で(基本的には明示的な読み込みを使用して)行う必要があります - [here](https://stackoverflow.com/questions/42704826/entity-framework-core-to -include-different-properties-from-subclasses/42705673#42705673)しかし、問合せを行うことなく、回避策はありません。 –
ありがとうございました。 – sandy