Breeze 自定义初始值设定项中导入的实体中缺少子导航属性

Breeze 自定义初始值设定项中导入的实体中缺少子导航属性,breeze,Breeze,我有一个自定义实体定义,如: var Card = function () {}; var cardInitializer = function (card) { // card.fields is defined in the metadata. // card._cfields is an in-memory only field // that breeze will not, and should not, track.

我有一个自定义实体定义,如:

    var Card = function () {};

    var cardInitializer = function (card) {

        // card.fields is defined in the metadata.
        // card._cfields is an in-memory only field
        // that breeze will not, and should not, track.
        // Thus it is being added in the initializer

        card._cfields = card.fields.slice();
    };
从服务器加载数据时,一切正常。
card.fields
数组具有相应的数据

编辑:添加了有关如何设置管理器的更多信息和代码

但是,当数据通过
.exportEntities
importEntities
在本地存储中进行往返时,在初始化器调用期间,元数据中定义的子数据(在本例中由属性
card.fields
表示)不会加载(数组的长度为
0
),尽管在加载完成后,它随后在实体上可用

以下是管理器的初始化方式:

var metadataStore = new breeze.MetadataStore();
metadataStore.importMetadata(options.metadata);

var queryOptions = new breeze.QueryOptions( {
    fetchStrategy: breeze.FetchStrategy.FromLocalCache
});

var dataService = new breeze.DataService({
   serviceName: "none",
   hasServerMetadata: false
 });

manager = new breeze.EntityManager({
    dataService: dataService,
    metadataStore: metadataStore,
    queryOptions: queryOptions
});

entityExtensions.registerExtensions(manager, breeze);

var entities = localStorage[storage];

if(entities && entities !== 'null'){
    manager.importEntities(entities);
}
再次查看“扩展实体”文档主题

您将看到,通过设计,breeze不知道在初始值设定项中创建的任何属性,因此在序列化(如实体导出)期间忽略这些属性。这是一个特性,而不是限制

如果要“了解”未映射属性,必须在实体构造函数(
)中定义它。。。即使以后在初始化函数中填充它


同样,在自己开始之前,最好先看看文档和示例。

哇。你向一个备受困扰的免费OSS产品开发者寻求免费支持,你大概很看重这个产品,然后你就因为他太轻率而对他大骂?降低他的回答

你能做出更慷慨的回应吗。也许你会意识到你的问题有点不清楚。我猜你会这样想,因为你编辑了你的问题,这样我就能明白你的意思

下一次有两个建议。(1) 好一点。(2) 提供说明问题的运行代码示例

我给你让路。我相信这证明了你的抱怨

它表明,当
importEntities
调用初始值设定项时,即使相关实体在缓存中,导航属性也可能未连接

当调用初始值设定项时,它们在查询结果处理过程中似乎是连接在一起的

我无法解释为什么他们在这方面有所不同。我会问的

我个人的偏好是保持一致,并将实体连接起来。但可能有很好的理由说明为什么我们不这样做,或者为什么即使在处理查询结果时也不确定。我会像我说的那样设法得到答案

同时,你必须解决这个问题。。。您可以通过处理导入返回的值来执行此操作:

var imported = em2.importEntities(exported);

FWIW,文档中没有提到这个问题。

感谢您的关注。我最终使用了一个已定义的属性get,该属性使我能够懒洋洋地进行后处理。对我来说似乎不一致。@我知道这已经超过一年了,但是在初始值设定项中访问子导航属性是否有任何更新?我没有导入实体,但仍然无法访问超过2个级别的子属性,即使在运行所有初始值设定项后实体都可用