如何通过web api加载复杂数据

时间:2013-11-29 15:41:32

标签: asp.net-mvc entity-framework asp.net-web-api

我有两个对象的模型: 项目和词汇有很多很多关系。

public class Project
{
public int Id { get; set; }
public List<ProjectWord> ProjectWords { get; set; }
}

public class ProjectWord
    {
        [Key, ForeignKey("Project"), Column(Order = 0)]
        public int project_Id { get; set; }
        [Key, ForeignKey("Word"), Column(Order = 1)]
        public int word_Id { get; set; }
        public Project Project { get; set; }
        public Word Word { get; set; }

    }

public class Word
    {
        public int Id { get; set; }
        public string WordContent { get; set; }
        public List<ProjectWord> ProjectWords { get; set; }       
    }

我正在使用webapi 2和EF 6

我的控制器得到的是:

[ResponseType(typeof(Project))]
        public IHttpActionResult GetProject(int id)
        {
            Project project = db.Projects.Find(id);

            if (project == null)
            {
                return NotFound();
            }

            return Ok(project);
        }

当我调用它时,它返回我的项目实体,但它的ProjectWords始终为null。 (我在数据库中有数据)。

尝试在我的上下文构造函数中禁用延迟加载

public KwToolsServerContext() : base("name=KwToolsServerContext")
        {
            Configuration.LazyLoadingEnabled = false;
            Configuration.ProxyCreationEnabled = false;
        }

但没有任何帮助。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过急切地加载实体?如下所示:

 db.Projects
   .Include(x => x.ProjectWords)
   .Include(x => x.ProjectWords.Select(y => y.Word))
   .Where(x => x.Id == id)