/ / Importar / exportar Breeze produzir propriedades de navegação nulas ou vazias - brisa

Importação / exportação de brisa produzem propriedades de navegação nulas ou vazias - brisa

Eu tenho entidades com propriedades de navegação, paraexemplo "Parent" (um objeto de EntityType) e "Children" (array de objetos de EntityType), mas quando exporto essas entidades para outro gerenciador, as propriedades de navegação "Parent" e "Children" são nulas ou vazias.

Eu uso as próximas linhas:

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

Tenho uma classe hierárquica com a associação bidirecional:

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

Tenho outras classes com Herança:

public class AClass : HClass
{
public string Observation { get; set; }
}

public class BClass : HClass
{
public int Number { get; set; }
}

O DbContext no servidor:

public DbSet<AClass> Projects { get; set; }
public DbSet<BClass> OtherProjects { get; set; }

Por favor, me ajude com esse erro.

Nota: Eu uso o breeze 1.3.4

Respostas:

1 para resposta № 1

O EntityManager.A chamada exportEntities (entityToExport) exporta apenas as entidades que são passadas, não aquelas que são propriedades de navegação nas entidades passadas. Em outras palavras, não fazemos uma travessia do gráfico durante a exportação, apenas as entidades de nível superior são exportadas. Caso contrário, uma pequena exportação pode muito bem derrubar uma parte significativa do cache local.

Existem duas abordagens para o que você deseja fazer.

A primeira, e mais simples, é simplesmente exportar todo o cache do entityManager. ou seja, EntityManager.exportEntities (), sem argumentos.

A segunda é usar metadados epercorra o gráfico de entidades você mesmo a partir das entidades de nível superior para baixo para construir uma lista de entidades para exportar. Tenha cuidado, o gráfico pode ficar grande muito rapidamente.

Espero que isto ajude.