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

Copy entities from one Breeze EntityManager to another EntityManager

这个 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”步骤。

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

我想尝试使用 Export/Import,但这似乎是为离线工作而设计的,并将所有值序列化为字符串。 (看起来它可能没有我想要的那样高效。)

是否有"normal"每个人都在 EntityManagers 之间复制实体的方法?

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

  • 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;
}