Opracowuję rozwiązanie asp.net z Durandal/breeze.Wykonaj zaznaczenie i rozwiń w tym samym zapytaniu, ale bryza nie jest obsługiwana.
Oto mój kod, aby wszystkie moje spedytorów:
var query = EntityQuery.from('Shippers')
.select('id, name, street, city');
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
Oto powiązany model:
public class Shipper
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Street { get; set; }
public string Number { get; set; }
public City City { get; set; }
}
public class City
{
public int Id { get; set; }
public string Name { get; set; }
public string PostCode { get; set; }
public Country Country { get; set; }
}
Teraz muszę także kraje
public class Country
{
[Key]
public int Id { get; set; }
public string Code { get; set; }
public string Name { get; set; }
}
ale z rzeczywiste zapytanie, do którego nie mam krajów.
Staram:
var query = EntityQuery.from('Shippers')
.select('id, name, street, city')
.expand('City.Country');
ale pojawia się błąd:
use of both 'expand' and 'select' in the same query is not currently supported
Moje pytanie: jak dostać krajach?
UPDATE
Jak sugeruje Jay możemy zrobić:
var query = EntityQuery.from('Shippers')
.select('id, name, street, city, city.country')
Teraz mam city_Country
obiektu:
nie mam Rozumiem, dlaczego jedziemy t to city_Country
ponieważ dane wiejskie są już dostępne w obiekcie miasto \ Kraj:
Ponadto daje mi problem, ponieważ mój następny rachunek spróbować map moje dto do mojego podmiot i przedmiot ten city_Country
nie istnieją w mojej jednostce i wystąpił błąd podczas mapowania.
Poniżej widzimy podmiot, przedmiot i nie ma city_Country
obiektu:
Czy muszę zrobić coś szczególnego w moim mapowania, aby tego uniknąć?
Poniżej jest moja funkcja operacji mapowania:
function mapToEntity(entity, dto) {
// entity is an object with observables
// dto is from json
for (var prop in dto) {
if (dto.hasOwnProperty(prop)) {
entity[prop](dto[prop]);
}
}
return entity;
}
Dziękuję za to wyjaśnienie. Dlaczego użyłem projekcji w moich kwerendach, ponieważ niektóre encje mogą zawierać wiele "ciężkich" właściwości, takich jak obrazy, ... więc w przypadku zapytań o prostą listę lepiej jest uzyskać tylko niezbędne właściwości lub wszystkie właściwości jednostki ? – Bronzato
Jedną z opcji jest po prostu odwzorowanie "ciężkich" właściwości na ich własny typ EntityType z jednoznaczną korespondencją do "parentType", która je wyklucza. Drugim jest faktyczne zmierzenie śladu perf/memory przy użyciu "pełnych" bytów i sprawdzenie, czy są one tak drogie, jak podejrzewasz. Zacznę od najprostszej architektury i komplikuję/optymalizuję ją tylko wtedy, gdy sam się przekonasz, że nie jest wydajna. tj. nie optymalizuj zbyt wcześnie. –