1

我有下一个层次类:

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; }
}

我在控制器中有一个返回父母和孩子的方法:

[HttpGet]
public IQueryable<HClass> Items()

我的视图模型中有一个功能:

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”只有没有子的父。

请帮我。

4

1 回答 1

1

这是设计使然,data.results 具有您查询的“即时”结果,即顶级“项目”。但是,如果您深入了解任何结果项的“子项”属性,您应该会看到子项。

如果不是这种情况,请检查您是否在 ApiController 类上使用 [BreezeController] 属性。此属性将 JSON.NET 序列化程序配置为向每个 json 'entity' 添加一个 '$type' 属性。如果您没有看到此属性,则可以肯定您缺少该属性。如果没有 $type 信息,微风将无法将孩子识别为实体并忽略它们。

(旁注,您也可以使用 JsonResultsAdapter 或 [JsonFormatter] 属性来做类似的事情,但 [BreezeController] 方法更简单)

于 2013-04-17T17:53:41.347 回答