如何/何时查询Breeze中的扩展'实体 [英] How/when to query 'extended' entities in Breeze

查看:0
本文介绍了如何/何时查询Breeze中的扩展'实体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个加载"子"实体的ViewModel,我还想根据加载的每个子实体显示"孙"实体。为了简单起见,我需要帮助确定如何查询这些对象并将它们显示在浏览器中适当的"树"下(请原谅我对编程语言的破坏:)

我使用Knokout绑定数据并使用Breeze加载实体。此问题是When to add extend additional complex types onto a Breeze entity

的扩展

另外-我的模型首先是EF代码,我有一个定义子孙之间一对多关系的配置,我认为Breeze已经知道这一点,但我正在尝试找出如何利用这一点。

Child s.js(查看模型)

var childs = ko.observableArray();
var grandChilds = ko.observableArray();
var parentId = ko.observable();

function refresh() {
    var parentId = (parent).parentId;  // << for ex. don't worry about this line : )
    return Q.all([getChildren(), getGrandChildren()]);
}

function getChildren() {
    return datacontext.getChildren(childs, parentId);
}

function getGrandChildren() {
    return datacontext.getGrandChildren(grandChilds);
}

和在视图(Child s.html)中

<div data-bind="foreach: childs">
    <div title="Go to Child Details">
        <div><strong data-bind="text: name"></strong></div>
        <div><strong data-bind="text: gender().description"></strong></div>
    </div>
    <div>
        <!-- ko.compose { view: grandChilds} --><!--/ko-->
    </div>
</div>

和我当前的数据上下文以供参考

    var getChilds= function (childsObservable, parentId) {

        var query = EntityQuery.from('Childs')
            .where('parentId', '==', parentId)
            .expand('grandChildren')
            .orderBy('id');

        return manager.executeQuery(query)
            .then(querySucceeded)
            .fail(queryFailed);

        function querySucceeded(data) {
            if (childsObservable) {
                childsObservable(data.results);
            }
            logger.log('Retrieved [Childs] and [Grandchilds] from remote data source', data, system.getModuleId(datacontext), true);
        }
    };

我只想加载子对象的孙子对象,因为有很多子对象,所以我只想在正确的子对象下显示孙子对象,而不是在一个列表中显示所有孙子对象。如有任何帮助,我们将不胜感激。

推荐答案

查询和"链接"相关实体的基本方法有三种。

1)使用实体查询。展开

2)使用EntityAspect.loadNavigationProperty

3)创建恰好包含整个图的"广泛"EntityQuery,所有父/子关系都将自动链接。

这篇关于如何/何时查询Breeze中的扩展&amp;#39;实体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆