使用Entity Framework和导航属性从{web}返回嵌套列表

时间:2016-12-06 08:54:37

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

我尝试使用导航属性返回带有嵌套列表的JSON,但我在' Usuario'收集在这里的输出。

 [
  {
    "$id": "1",
    "id": 1,
    "encabezado": "Como llamar a un metodo en c#",
    "cuerpo": "Estoy intentando llamar un metodo metodo() pero no puedo alguna sugerencia xD?",
    "points": 0,
    "Usuario": null,
    "Respuestas": []
  },
  {
    "$id": "2",
    "id": 2,
    "encabezado": "Como cambiar conection String",
    "cuerpo": "Es posible cambiar el conection string en asp.net si ya esta creada?",
    "points": 1,
    "Usuario": null,
    "Respuestas": []
  }
]

这是我的.edmx

enter image description here

最后这就是我拥有web api的地方

namespace AskTecProject.Controllers
{
    public class QuestionController : ApiController
    {
        [HttpGet]
        public List<Pregunta> GetQuestions()
        {
            using (asktecdbEntities entities = new asktecdbEntities())
            {
                List<Pregunta> p = entities.Usuarios.Where(m => m.id.Equals(1)).SelectMany(m => m.Preguntas).ToList<Pregunta>();
                return p;

            }
        }
    }
}

我从Getting a related collection收到了他的询问,但我仍然遇到这个问题,我会感激任何帮助

1 个答案:

答案 0 :(得分:2)

您应该使用Eager Loading

List<Pregunta> preguntas = entities.Usuarios
       .Where(u => u.id.Equals(1))
       .SelectMany(u => u.Preguntas)
       .Include(p => p.Usuario) // here
       .ToList<Pregunta>();

旁注 - 似乎所有Preguntas实体都将具有id = 1的相同Usuario实体。此外,您不需要为ToList方法指定通用参数 - 应该推断出参数。