ASP API 核心:获取多对一关系

ASP API CORE : Get relation Many to One

我有两个实体:文章和 PrixVariation。 一篇文章有​​许多 Prix 变体。 一次大奖赛变体有一篇文章。

public partial class Article
            {
                public Article()
                {            
                    PrixVariations = new HashSet<PrixVariation>();
                }
        
                public int Id { get; set; }
                public DateTime DateTime { get; set; }         
    ... 
                public virtual ICollection<PrixVariation> PrixVariations { get; set; }
    
            }
public partial class PrixVariation
    {
        public int Id { get; set; }
        public DateTime DateTime { get; set; }
        public int Article { get; set; }
        public double Prix { get; set; }

        public virtual Article ArticleNavigation { get; set; } = null!;

    }

我的上下文如下:

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Article>(entity =>
            {
                entity.ToTable("articles");

                entity.Property(e => e.Id).HasColumnName("id");

                
                entity.Property(e => e.DateTime)
                    .HasColumnType("datetime")
                    .HasColumnName("dateTime")
                    .HasDefaultValueSql("(getdate())");

                
            });

 modelBuilder.Entity<PrixVariation>(entity =>
            {
                entity.ToTable("prix_variation");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id");

                entity.Property(e => e.Article).HasColumnName("article");

                entity.Property(e => e.DateTime)
                    .HasColumnType("datetime")
                    .HasColumnName("dateTime")
                    .HasDefaultValueSql("(getdate())");

                entity.Property(e => e.Prix).HasColumnName("prix");

                entity.HasOne(d => d.ArticleNavigation)
                    .WithMany(p => p.PrixVariations)
                    .HasForeignKey(d => d.Article)
                    .OnDelete(DeleteBehavior.ClientSetNull)
                    .HasConstraintName("FK_prix_variation_articles");
            });

我的控制器如下:

public class ArticlesController : ControllerBase
    {
        private readonly STGEORGESContext _context;

        public ArticlesController(STGEORGESContext context)
        {
            _context = context;
        }

        // GET: api/Articles
        [HttpGet]
        public async Task<ActionResult<IEnumerable<Article>>> GetArticles()
        {
            return await _context.Articles.ToListAsync();
        }
....

这里有些东西不起作用,因为当我启动 debogger 时,PrixVaration 的集合总是空的:

{"id":1,"dateTime":"2021-11-28T08:37:17","prixVariations":[]}

当然在数据库中有一个链接到该文章的 PrixVaration..

谁能帮忙??太感谢了!!!

皮埃尔

这叫做延迟加载。如果您不明确询问,Ef 不会加载任何对象集合。所以试试这个

return await _context.Articles.Include(i=> i.PrixVariations).ToListAsync();