不使用 PostgreSQL 在 Entity Framework Core 中检索相关的 table 数据

Doesn't retrieve the related table data in Entity Framework Core with PostgreSQL

我正在尝试 Entity Framework 核心与 PostgreSQL。我有两个一对多关系的表。根据关系,电影有一年,一年有很多电影。但是一旦我检索电影,年份就不会包含在其中,除非检索年份,否则每部电影中的年份都是空的。但是找回岁月之后,电影就变成了有岁月的。当我将年份检索代码行向上移动时。同样的事情发生了。岁月没有电影除非找回电影。然后,检索电影后,选定的年份变为有电影。谁能知道如何解决?这就像延迟加载。

这是我的两个实体。

public class T_MOVIE
{
    [Key]
    public long Oid { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public DateTime CreatedDate { get; set; }
    public long? YearOid { get; set; }
    [ForeignKey("YearOid")]
    public T_YEAR MOVIE_YEAR { get; set; }
}

public class T_YEAR
{
    public T_YEAR()
    {
        this.YEAR_MOVIEs = new HashSet<DataModel.T_MOVIE>();
    }
    [Key]
    public long Oid { get; set; }
    public string Name { get; set; }
    public ICollection<T_MOVIE> YEAR_MOVIEs { get; set; }
}

并且在 OnModelCreating 中,

protected override void OnModelCreating(ModelBuilder builder)
{
    builder.Entity<T_MOVIE>().HasKey(m => m.Oid);
    builder.Entity<T_MOVIE>().HasOne(m => m.MOVIE_YEAR).WithMany(m => m.YEAR_MOVIEs);

    builder.Entity<T_YEAR>().HasKey(m => m.Oid);
    builder.Entity<T_YEAR>().HasMany(m => m.YEAR_MOVIEs).WithOne(m => m.MOVIE_YEAR);
}

然后,我检索数据。

var movies = _db.T_MOVIE.ToList();
var years = _db.T_YEAR.ToList();

谢谢。

您必须在查询中添加 "Include()"。除非这样做,否则 returns 无效关系。