0

私はASP.NET Coreを初めて使用しており、EntityFramework Coreとの基本的な関係を設定しようとしています。 WebPageクラスと1:Mの関係を持つNavigationCategoryクラスがあります。関係は私のDB(それは外来のキーを持っています)によって理解されますが、WebPageをリポジトリから取得するときにNavigationCategoryIdが設定されていてもNavigationCategoryはありません。ASP.NETコアの関係はデータベースにありますが、取得されません。

public class WebPage : BaseEntity 
{ 
    private string _route; 

    public string Title { get; set; } 
    public string Body { get; set; } 

    [ForeignKey("NavigationCategory")] 
    public long NavigationCategoryId { get; set; } 

    public NavigationCategory NavigationCategory { get; set; } 

    public WebPage() 
    { 
    } 
} 

public class NavigationCategory : BaseEntity 
{ 
    public string Title { get; set; } 
    public IEnumerable<WebPage> WebPages { get; set; } 

    public NavigationCategory() 
    { 
    } 
} 

これは、単純なBaseEntityです:

public class BaseEntity 
{ 
    public long Id { get; set; } 
} 

これは私のDBのコンテキストである:

あなたが明示的にあなたがEFコアを使用してエンティティをフェッチするとき含ましたい任意のナビゲーションプロパティを含める必要が
public class AppDataContext : DbContext 
{ 
    public DbSet<Employee> Employees { get; set; } 
    public DbSet<KinderClass> KinderClasses { get; set; } 
    public DbSet<Feed> Feeds { get; set; } 
    public DbSet<NavigationCategory> NavigationCategories { get; set; } 
    public DbSet<WebPage> WebPages { get; set; } 

    public AppDataContext(DbContextOptions<AppDataContext> options) : base(options) 
    { 
     Database.EnsureCreated(); 
    } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<WebPage>() 
      .HasOne(wp => wp.NavigationCategory) 
        .WithMany(c => c.WebPages) 
        .HasForeignKey(wp => wp.NavigationCategoryId); 
    } 
} 
+0

[documentation](https://docs.microsoft.com/en-us/ef/core/querying/related-data)をお読みください。レイジーローディングはまだサポートされていません。関連するデータを明示的または熱心に( 'Include' /' ThenInclude'を使って)持たなければなりません。 –

+0

ああありがとう:) –

答えて

0

。たとえば、次のようにクエリを更新します。

var webpage = dbContext.WebPages 
    .Include(w => w.NavigationCategory) 
    .FirstOrDefault(); 

注意を、あなたは最低でも、これらの2つの名前空間が必要になります。

using Microsoft.EntityFrameworkCore; 
using System.Linq; 

loading related data、なぜlazy loading shouldn't be used in web apps詳細については、こちらをご覧ください。

関連する問題