将实体从一个Breeze EntityManager复制到另一个EntityManager

时间:2017-05-23 18:53:31

标签: breeze

这个breeze documentation page有一个用于制作EntityManager副本的示例:

function createManager() {
   // same configuration; no entities in cache.
   var manager = masterManager.createEmptyCopy(); 

   // ... copy in some entities (e.g.,picklists) from masterManager

   return manager;
}

我不确定我应该如何执行“copy in some entities (e.g.,picklists) from masterManager”步骤。

我想我可以创建实体,好像它们是新的一样。但它们不是,它们是从数据库中查询的选项列表值。

我考虑过尝试使用导出/导入,但这似乎是用于脱机工作并将所有值序列化为字符串。 (这似乎不像我想要的那样高效。)

每个人都有“正常”的方式在EntityManagers之间复制实体吗?

1 个答案:

答案 0 :(得分:1)

是的,您通过导出和导入复制实体。为了提高性能,您应该指定

  • asString: false,以避免字符串序列化开销,
  • includeMetadata: false,因为createEmptyCopy()创建了一个已有元数据的EntityManager

所以:

function createManager() {
   // same configuration; no entities in cache.
   var manager = masterManager.createEmptyCopy(); 

   var entities = masterManager.exportEntities(null, { asString: false, includeMetadata: false });
   manager.importEntities(entities);

   return manager;
}