不使用 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 无效关系。
我正在尝试 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 无效关系。