1

Webプロジェクトに.NETコアとEFコアを使用しています。私は、多対多の関連性を照会する方法に苦労しています。これは私のモデルがどのように見えるかです:EFコアの多対多関連性を照会する方法

public class Begrip 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public string Desc { get; set; } 
    [Url] 
    public string URL { get; set; } 
    public ICollection<BegripCategory> Categories { get; set; } 
} 

public class Category 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public ICollection<BegripCategory> Begrippen { get; set; } 
} 

public class BegripCategory 
{ 
    public int begripId { get; set; } 
    public Begrip begrip { get; set; } 
    public int categoryId { get; set; } 
    public Category category { get; set; } 
} 

そして、私のデータベースコンテキスト:やろうとして何イム

public class PBBContext : DbContext 
{ 
    public PBBContext (DbContextOptions<PBBContext> options) 
     : base(options) 
    { 
    } 

    public DbSet<PBB.Models.Movie> Movie { get; set; } 
    public DbSet<PBB.Models.Begrip> Begrip { get; set; } 
    public DbSet<PBB.Models.Category> Category { get; set; } 
    public DbSet<PBB.Models.BegripCategory> BegripCategory { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelbuilder) 
    { 
     modelbuilder.Entity<BegripCategory>().HasKey(bc => new { bc.begripId, bc.categoryId }); 

     modelbuilder.Entity<BegripCategory>().HasOne(b => b.begrip).WithMany(bg => bg.Categories).HasForeignKey(bc => bc.begripId); 
     modelbuilder.Entity<BegripCategory>().HasOne(c => c.category).WithMany(ca => ca.Begrippen).HasForeignKey(cc => cc.categoryId); 
    } 
} 

は、すべての対応「カテゴリのJSONの結果に、すべての「Begrippen」を返すことですしかし、私はそれらのための "カテゴリ"のリストを取得する方法を把握することはできません。

アイデア?前もって感謝します。

答えて

5

EFコアは自動的に関連するプロパティをロードしませんので、あなたはこれを明示的に行う必要がありますが、トリックを行う必要があり、次のようなもの:

var result = context.Begrip 
    .Include(x => x.Categories) 
    .ThenInclude(x => x.category); 

注意、インテリセンスは常にオン動作しません。現在は.ThenIncludeですが、コードに赤い下線が表示されてもコンパイルする必要があります。など

ビューまたはAPIにこれを返却している場合、あなたはおそらくDTOにマップしたいと思うので、あなたが.Categories[0].category.Nameに対処する必要はありません

+0

[イーガーロード]と呼ばれるその( https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx) – LeeonTM

関連する問題