Breeze:展开恢复结果但不在客户端上显示

时间:2014-01-23 10:37:21

标签: breeze

我有以下实体:

public class Return : IAuditable
{
    public int Id { get; set; }

    /* Other properties */

    public virtual ReturnReason ReturnReason { get; set; }
    public virtual ICollection<ReturnItem> ReturnItems { get; set; }

    public Return()
    {
        ReturnItems = new List<ReturnItem>();
    }
}

然后我执行一个EntityQuery来按Id获取Return,如下所示:

            var entityKey = new EntityKey('Return', id);

            return EntityQuery.fromEntityKey(entityKey)
                .expand('ReturnItems, ReturnReason')
                .using(manager)
                .execute()
                .to$q(querySucceeded);

        function querySucceeded(data) {
            console.log(data);
        }

进行以下oData调用:

Breeze/Returns?$filter=Id%20eq%2015&$expand=ReturnItems%2CReturnReason

问题是,return.returnItems是一个空数组,即使我知道这个Return实体附加了项目。但是return.returnReason已正确填充。当我在浏览器中访问该URL时,我可以看到填充的ReturnItems导航属性(我因为糟糕的裁剪能力而ploglog!):

enter image description here

enter image description here

当我console.log(data)时,我不确定为什么它是空的?

1 个答案:

答案 0 :(得分:1)

我认为问题在于你的Return引用了一个ReturnItems的集合(显然EF很高兴返回),但是ReturnItem缺少返回的引用。

public class ReturnItem
{
    public int Id { get; set; }

    /* Other properties */

    public virtual Return Return { get; set; }
}

另一个注意事项是你的Return构造函数将ReturnItems实例化为IList&lt;&gt;但本质上它应该已经构建,只是没有价值。