将实体从一个 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;
}
这个 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;
}