/ / Import / eksport Breeze generuje puste lub puste właściwości nawigacji - bryza

Import / eksport Breeze daje null lub puste właściwości nawigacji - bryza

Mam obiekty z właściwościami nawigacji, dlaprzykład „Parent” (obiekt EntityType) i „Children” (tablica obiektów EntityType), ale gdy eksportuję te jednostki do innego menedżera, właściwości nawigacyjne „Parent” i „Children” są puste lub puste.

Używam następnych wierszy:

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

Mam klasę hierarchiczną z dwukierunkowym powiązaniem:

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

Mam inne klasy z dziedziczeniem:

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

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

DbContext na serwerze:

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

Pomóż mi z tym błędem.

Uwaga: używam bryzy 1.3.4

Odpowiedzi:

1 dla odpowiedzi № 1

EntityManager.Wywołanie exportEntities (entityToExport) eksportuje tylko te elementy, które są przekazywane, a nie te, które są właściwościami nawigacyjnymi dla przekazywanych elementów. Innymi słowy, nie wykonujemy trawersu wykresu podczas eksportu, eksportowane są tylko podmioty najwyższego poziomu. W przeciwnym razie mały eksport może równie dobrze obniżyć znaczną część lokalnej pamięci podręcznej.

Istnieją dwa podejścia do tego, co chcesz zrobić.

Pierwszym i najprostszym jest po prostu wyeksportowanie całej pamięci podręcznej entityManager. tj. EntityManager.exportEntities (), bez argumentów.

Drugim jest użycie metadanych bryzy iprzesuwaj wykres encji od jednostek najwyższego poziomu w dół, aby utworzyć listę jednostek do wyeksportowania. Uważaj, wykres może bardzo szybko się powiększyć.

Mam nadzieję że to pomoże.