【问题标题】:Breeze.js using noTracking not unwrapping entitiesBreeze.js 使用 noTracking 不展开实体
【发布时间】:2014-01-29 17:21:07
【问题描述】:

我正在尝试在本地执行查询。我将 .noTracking() 链接到查询,但它没有展开实体。

var result = breeze.EntityQuery
    .from('ResourceName')
    .where('id', '==', 1)
    .expand('OtherEntities')
    .noTracking()
    .using(manager)
    .executeLocally();

我已经尝试使用 fromEntities、executeQueryLocally 和一堆其他变体进行相同的查询,但我无法取回未包装的实体。

我可以使用 Select,但我宁愿不用,因为我也在使用 expand。

EntityQuery 在访问服务器时是否仅与 noTracking() 一起使用?

使用 Breeze.js 1.4.7 和 Knockout 3.0

【问题讨论】:

    标签: javascript knockout.js breeze


    【解决方案1】:

    是的,没错,EntityQuery noTracking 方法仅在查询服务器时适用。我们将更新文档,以便更清楚。

    【讨论】:

    • 温馨提醒,2016 年 11 月。如果这在文档中会很好 breeze.github.io/doc-js/api-docs/classes/…
    • 我们目前正在将微风.js 重写为 typescript(完全向后兼容),因此我将把它包含在新文档中。谢谢。
    【解决方案2】:

    这不是限制。在本地执行查询意味着在缓存中查找实体。 “无跟踪”表示“我不希望缓存中的实体”。在不应该出现的地方查询实体是矛盾的。

    【讨论】:

    • 是的,但是具有扩展属性的解包 pojo 将非常强大。
    • 我想了解这“真正强大”的场景。也许这可以激发一个功能。你也看过documentation on entity serialization吗?那里可能有一些有用的线索。
    • 是的,我有,很多次:)。想象一下具有导航属性的深层嵌套实体树。联赛有球队,球队有球员。如果微风开发人员想要将这些加载到第三方网格中或使用 select() 序列化对象以进行自定义保存,则要困难得多。创建自定义保存序列化功能当然是可能的,但老实说我还没有让它正常工作。给我更多的作业。
    • 我们一直在考虑一种“解开”任何微风实体的方法。即返回原始 js 对象的集合。它不会以任何方式影响 EntityManager 缓存。如果我们有这个,它对您的用例有用吗?
    • 非常有用。我认为很多开发人员都希望从他们的对象图中获取原始 JSON,但我花了大约 3 天的时间试图做到这一点无济于事。 ko.toJS() 适用于一些网格等,但说我正在实现自定义保存,并且我想将 JSON 传递回服务器 - 所有 AJAX 都在 entityType 和 entityAspect 上调用打嗝。删除一个或两个属性会在 Breeze 尝试更新到新值时引发错误(当 _$interceptor 触发时)Breeze 默认保存没有选项来维护结构(我至少看到)
    猜你喜欢
    • 2011-04-28
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多