【问题标题】:Breeze is not materializing entity微风不是实体化的实体
【发布时间】:2013-03-22 04:12:31
【问题描述】:

我正在使用 NoDb 解决方案,我使用我在此处发生的对话后创建的命令行工具生成我的 POCO 模型的元数据:https://stackoverflow.com/a/14904913/178620

即使有了这些元数据,我发现 Breeze 并没有物化加载了简单查询的实体。因此,typeInitializers 不会被执行,实体属性也不是可观察的。

我知道我的设置和元数据是正确的,因为我在 typeInitializer 函数上定义的 ko.computed 属性之前有效。让我解释一下发生了什么变化!

以前,由于我们使用 AutoMapper,我不得不避免使用 IQueryable,这导致我使用 jQuery get 来一一加载我的实体。这样实体就不会被具体化,所以我在entityManager 中公开了mergeEntity 函数来手动执行此操作,瞧(轻描淡写)事情奏效了。

从那时起,我们实现了横切模型并消除了 AutoMapper,现在我可以再次使用IQueryable,从而进行 Breeze 查询。但是,我对为什么我的实体没有按预期工作感到困惑!

【问题讨论】:

    标签: breeze


    【解决方案1】:

    查看 yourEntityManager.metadataStore.getEntityTypes() 方法返回的实体类型,并将其与服务器返回的 json 中嵌入的实体类型名称进行比较。

    json 结果中每个实体的 $type 属性用于在 metadataStore 中定位相应的“entityType”。我的猜测是类型名称现在不同,或者您的 ApiController 上缺少 [BreezeController] 属性。此属性确保使用正确的 JSON.NET 序列化设置。

    【讨论】:

    • 没错,在查看 $type 之后,我注意到类型有一个 DynamicProxy 命名空间,在禁用 EF 代理创建后: DbContext.Configuration.ProxyCreationEnabled = false;它开始工作了。
    • 太棒了!并感谢发回。针对这种情况,我会尝试在我们的文档中添加一些内容。
    • Np。我对相关收藏有类似的问题。我检查了 JSON 有效负载并且数据在那里,类型信息看起来正确。然而,子集合被具体化为 Object[0]。有什么想法吗?
    • 所以假设我有实体 A,其中包含 ICollection 和属性 C,当我在 Chrome 控制台中观察实体 A 时,我看到类似:Object {entityAspect: ctor, C: function, Id : function, ...} C: functiondependentObservable() { Bs: Object[0] - 即使 JSON 数据包含数组 B 对象
    猜你喜欢
    • 2014-11-02
    • 2013-04-05
    • 2014-04-08
    • 1970-01-01
    • 2013-05-17
    • 2015-04-20
    • 1970-01-01
    • 2014-03-01
    • 2016-03-25
    相关资源
    最近更新 更多