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 № 1EntityManager.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.