我有具有导航属性的实体,例如“Parent”(EntityType的对象)和“Children”(EntityType的对象数组),但是当我将这些实体导出到另一个管理器时,导航属性“Parent”和“儿童“无效或空无一人。
我使用下一行:
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; }
}
我有其他继承类:
public class AClass : HClass
{
public string Observation { get; set; }
}
public class BClass : HClass
{
public int Number { get; set; }
}
服务器中的DbContext:
public DbSet<AClass> Projects { get; set; }
public DbSet<BClass> OtherProjects { get; set; }
请帮我解决这个错误。
注意:我使用breeze 1.3.4
答案 0 :(得分:1)
EntityManager.exportEntities(entitiesToExport)调用仅导出传入的实体,而不是传入实体的导航属性。换句话说,我们在导出期间不执行图形遍历,只有顶层实体已导出。否则,小型导出可能会很好地降低本地缓存的很大一部分。
您有两种方法可以做。
第一个,也是最简单的,就是简单地导出整个entityManager缓存。即EntityManager.exportEntities(),没有args。
第二种方法是使用breeze元数据并自己从顶层实体遍历实体图,以构建要导出的实体列表。小心,图表可以很快变大。
希望这有帮助。