实体框架多对多Web API Get

问题描述 投票:0回答:1

我已经看了一百万页,我觉得这应该是微不足道的,但我真的很挣扎。

我正在尝试使用代码优先创建一个 .net Web API,我有两个模型:事件和团队。每个活动都有很多团队,每个团队都会做很多项目。

在我的 /api/GetEvents 请求中,我可以正常获取事件信息,但与该事件关联的团队列表为空

// GET: api/Events
    public IQueryable<Event> GetEvents()
    {
        return db.Events
    }

活动:

public class Event
{
    public int EventId { get; set; }
    [Required]
    public string EventTitle { get; set; }
    [Required]
    public string EventLocation { get; set; }
    public string EventTicketPrice { get; set; }
    [Required]
    public DateTime EventDateTime { get; set; }
    [Required]
    public ICollection<Team> Teams{ get; set; }
}

团队:

public class Team
{
    [Key]
    public int TeamId { get; set; }
    [Required]
    public string TeamName { get; set; }
    public string Class { get; set; }
    public string TeamLocation { get; set; }
    public string TeamWebsite { get; set; }

    public ICollection<Event> Events { get; set; }
}

我检查了生成的数据库,中间表在那里,但它没有连接多对多关系。我尝试通过查询将它们连接在一起,但是中间表没有 DbSet 来连接到表。 我错过了什么?

.net asp.net-mvc entity-framework asp.net-web-api
1个回答
1
投票

尝试将集合属性设为虚拟:

public virtual ICollection<Team> Teams{ get; set; }

并且:

public virtual ICollection<Event> Events { get; set; }

EF 使用“虚拟”来标记它将尝试为您维护的导航属性,例如延迟加载。如果您不使用 virtual 标记导航属性,则您需要自行确保导航目标已加载。

© www.soinside.com 2019 - 2024. All rights reserved.