轻松地将一个经理的实体添加到另一个经理 [英] adding entity from one manager to another in breeze
问题描述
我使用相同的元数据创建了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屋!