我有下一个等级类:
public class HClass
{
public HClass()
{
Children = new List<HClass>();
}
[Key]
public int Id { get; set; }
public Nullable<int> ParentId { get; set; }
public string Name { get; set; }
public virtual ICollection<HClass> Children { get; set; }
}
我在Controller中有一个返回父母和孩子的方法:
[HttpGet]
public IQueryable<HClass> Items()
我的viewmodel中有一个函数:
function getItems() {
return entityQuery.from('Items')
.using(manager).execute()
.then(success)
.fail(queryFailed);
function success(data) {
vm.items = data.results; //Problem here.
}
}
在调试模式下,我会检查“data.XHR.responseText
”是否有嵌套的JSON,所有项目都包含各自的子项,但“data.results
”只有没有子项的父项。
请帮助我。
答案 0 :(得分:1)
这是设计的,data.results具有您查询的“立即”结果,即顶级“项目”。但是,如果您深入查看任何结果项的“Children”属性,则应该看到这些子项。
如果不是这种情况,请检查您是否在ApiController类上使用[BreezeController]属性。此属性配置JSON.NET序列化程序以向每个json“实体”添加“$ type”属性。如果您没有看到此属性,那么您可能会错过该属性。没有$ type信息breeze将不会将子项识别为实体并将忽略它们。
(旁注,你也可以使用JsonResultsAdapter或[JsonFormatter]属性做类似的事情,但[BreezeController]方法更简单)