0

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

我使用下一行:

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

请帮我解决这个错误。

注意:我使用的是微风 1.3.4

4

1 回答 1

1

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

您想要做的事情有两种方法。

第一个也是最简单的,就是简单地导出整个 entityManager 缓存。即EntityManager.exportEntities(),没有参数。

第二种是使用微风元数据并自己从顶级实体向下遍历实体图以构建要导出的实体列表。小心,图表会很快变大。

希望这可以帮助。

于 2013-05-30T23:43:32.167 回答