轻松地将一个经理的实体添加到另一个经理 [英] adding entity from one manager to another in breeze

查看:61
本文介绍了轻松地将一个经理的实体添加到另一个经理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用相同的元数据创建了2个实体管理器,并希望将一些实体从manager1添加到manager2。

I've created 2 entity managers using the same metadata and want to add some entity from manager1 to manager2.

我遇到错误:由于该实体关联的EntityType和MetadataStore与该EntityManager的MetadataStore不匹配,因此无法附加该实体。

此处创建经理的函数:

function createLocalManager(servName) {
    var dataService = new breeze.DataService({
        serviceName: servName,
        hasServerMetadata: false
    });

    var metadataStore = new breeze.MetadataStore(); 
    metadataStore.importMetadata(app.metadata); // initialize it from the application's metadata variable

    return new breeze.EntityManager({
        dataService: dataService,
        metadataStore: metadataStore
    });
}

在这里我得到了我的错误:

here I get my error:

em1 = createLocalManager('serviceName1');
em1.createEntity("Picture");

em2 = createLocalManager('serviceName2');
em2.addEntity(em1.getEntities()[0]);

我也检查过了,这

em1.metadataStore == em2.metadataStore

返回false! !!为什么?

return false!!! Why?

任何帮助将不胜感激!

推荐答案

首先, Breeze提供了一种名为 entityManager.createEmptyCopy()的方法来创建具有相同元数据的原始EntityManager的副本。

Firstly, Breeze provides a method called entityManager.createEmptyCopy() to create a copy of the original EntityManager with the same metadata.

var em2 = em1.createEmptyCopy();

第二,因为您使用的是不同的 DataService ,则必须手动设置 em2 dataService。

Secondly, since you're using a different DataService, you have to set em2 dataService manually.

var ds = new breeze.DataService({
   serviceName: 'serviceName2',
   hasServerMetadata: false
});

em2.setProperties({dataService: ds});

最后,在多个entityManager之间共享实体的正确方法是使用 entityManager .exportEntities entityManager.importEntities

Finally, the correct way to share entities among multiple entityManagers is to use entityManager.exportEntities and entityManager.importEntities

var picture = em1.createEntity("Picture");
var entitiesToExport = [picture];
var exportedEntities = em1.exportEntities(entitiesToExport);
em2.importEntities(exportedEntities);

关于创建多个管理器并在其中共享数据的主题也在 http://www.breezejs.com/documentation/multiple-managers

This topic of creating multiple managers and sharing data among them is also documented in detail on http://www.breezejs.com/documentation/multiple-managers

希望这会有所帮助。

这篇关于轻松地将一个经理的实体添加到另一个经理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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