Breeze导入/导出生成空或空的导航属性

Breeze导入/导出生成空或空的导航属性,breeze,Breeze,我有一些具有导航属性的实体,例如“Parent”(EntityType的对象)和“Children”(EntityType的对象数组),但当我将这些实体导出到另一个管理器时,导航属性“Parent”和“Children”为null或空 我使用下面几行: var query = entityQuery.from('Projects'); var entitiesTmp = manager.executeQueryLocally(query); //entitiesTmp have navigati

我有一些具有导航属性的实体,例如“Parent”(EntityType的对象)和“Children”(EntityType的对象数组),但当我将这些实体导出到另一个管理器时,导航属性“Parent”和“Children”为null或空

我使用下面几行:

var query = entityQuery.from('Projects');
var entitiesTmp = manager.executeQueryLocally(query); //entitiesTmp have navigation properties
var exportData = manager.exportEntities(entitiesTmp);
var mgrTmp = new breeze.EntityManager(config.remoteServiceName);
mgrTmp.importEntities(exportData);
var entitiesTmp1 = mgrTmp.executeQueryLocally(query); //entitiesTmp1 doesn't have navigation properties
我有一个具有双向关联的分层类:

public abstract class HClass
{        
    public HClass()
    {
        Children = new List<HClass>();
    }
    [Key]
    public int Id { get; set; }
    public Nullable<int> ParentId { get; set; }
    public string Name { get; set; }

    public virtual ICollection<HClass> Children { get; set; }
    public virtual HClass Parent { get; set; }
}
服务器中的DbContext:

public DbSet<AClass> Projects { get; set; }
public DbSet<BClass> OtherProjects { get; set; }
公共数据库集项目{get;set;}
公共DbSet OtherProjects{get;set;}
请帮我纠正这个错误


注意:我使用breeze 1.3.4

EntityManager.exportEntities(entitiesToExport)调用仅导出传入的实体,而不是传入实体上的导航属性。换句话说,我们在导出期间不进行图形遍历,只导出顶级实体。否则,一个小的导出很可能会导致本地缓存的很大一部分停机

有两种方法可以实现您的目标

第一个也是最简单的方法是简单地导出整个entityManager缓存。i、 e.EntityManager.exportEntities(),不带参数

第二种方法是使用breeze元数据,从顶层实体向下遍历实体图,以建立要导出的实体列表。小心,图形可能会很快变大


希望这能有所帮助。

第三种也是最好的方法。。。虽然有些工作。。。将编写一个
EntityManager.getEntityGraphs(rootEntities,[navigationPathStringArray])
方法,该方法返回由根和路径标识的相关实体组成的实体集合。路径应遵循Breeze
select
的语法。然后将其贡献给Breeze项目。我们很乐意。谢谢你的建议,非常感谢你的帮助。
public DbSet<AClass> Projects { get; set; }
public DbSet<BClass> OtherProjects { get; set; }