我最近在遇到一个涉及返回对象图的Web API项目时遇到了(希望)小问题,以便它们可以被读为JSON。任务的处理对象图 - Web API
例子中的物体(通过EF生成):与它的所有相关活动
//A Task Object (Parent) can consist of many Activities (Child Objects)
public partial class Task
{
public Task()
{
this.Activities = new HashSet<Activity>();
}
public int TaskId { get; set; }
public string TaskSummary { get; set; }
public string TaskDetail { get; set; }
public virtual ICollection<Activity> Activities { get; set; }
}
我ApiController中,我要求的特定任务(凭身份证)一起,通过:单任务请求的
例
//Simple example of pulling an object along with the associated activities.
return repository.Single(t => t.Id == id).Include("Activities");
一切似乎工作正常 - 但是当我尝试导航到一个URL来访问此,如/api/tasks/1
,该方法执行它应该,但没有对象返回(只是一个简单的找不到该页面)。
如果我请求一个不包含任何活动的任务 - 一切都按预期工作,它会返回正确的JSON对象Activities : []
。
我确定有很多方法可以解决这个问题 - 我只是想我会对人们认为是最好的处理方法有所了解。
考虑方法(到目前为止):
使用其它的JSON解析器(如Newtonsoft.JSON),它固定在整个返回数据的问题,但附加的$ id和$裁判,这可能我相信难以解析Knockout。
使用投影和利用匿名类型返回数据。 (目前为止未测试)
删除完全包含并仅通过其他请求访问子数据。
任何和所有的建议将不胜感激。
谢谢塞西尔 - 我会寻找尝试沿着这些线路看看事情是怎么回事。 –