C# ASP.NET核心关系位于数据库中,但未检索

C# ASP.NET核心关系位于数据库中,但未检索,c#,asp.net,entity-framework,asp.net-core,entity-framework-core,C#,Asp.net,Entity Framework,Asp.net Core,Entity Framework Core,我是ASP.NET Core的新手,我正在尝试与EntityFramework Core建立基本关系。我有一个NavigationCategory类,它与WebPage类有1:M关系。my DB可以理解这种关系(它有一个外键),但当从存储库检索网页时,它没有NavigationCategory,即使它设置了NavigationCategoryId public class WebPage : BaseEntity { private string _route; public

我是ASP.NET Core的新手,我正在尝试与EntityFramework Core建立基本关系。我有一个NavigationCategory类,它与WebPage类有1:M关系。my DB可以理解这种关系(它有一个外键),但当从存储库检索网页时,它没有NavigationCategory,即使它设置了NavigationCategoryId

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()
    {
    }
}
这是我的数据库上下文:

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);
    }
}
公共类AppDataContext:DbContext
{
公共数据库集雇员{get;set;}
公共DbSet类{get;set;}
公共DbSet提要{get;set;}
公共数据库集导航类别{get;set;}
公共数据库集网页{get;set;}
公共AppDataContext(DbContextOptions):基本(选项)
{
数据库。请重新创建();
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity()
.HasOne(wp=>wp.NavigationCategory)
.WithMany(c=>c.webpage)
.HasForeignKey(wp=>wp.NavigationCategoryId);
}
}

在使用EF Core获取实体时,您需要明确地包含任何想要包含的导航属性。例如,按如下方式更新查询:

var webpage = dbContext.WebPages
  .Include(w => w.NavigationCategory)
  .FirstOrDefault();
注意,您至少需要这两个名称空间:

using Microsoft.EntityFrameworkCore;
using System.Linq;

了解更多信息及其原因。

阅读。目前还不支持延迟加载,您必须显式或快速加载(使用
包含
/
然后包含
)相关数据。噢,非常感谢:)
using Microsoft.EntityFrameworkCore;
using System.Linq;