Tôi phát triển một giải pháp asp.net với Durandal/khoe.Thực hiện lựa chọn và mở rộng trong cùng một truy vấn với gió không được hỗ trợ
Đây là mã của tôi để nhận được tất cả các chủ hàng của tôi:
var query = EntityQuery.from('Shippers')
.select('id, name, street, city');
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
Dưới đây là mô hình có liên quan:
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; }
}
Bây giờ tôi cần phải cũng bao gồm các nước
public class Country
{
[Key]
public int Id { get; set; }
public string Code { get; set; }
public string Name { get; set; }
}
Nhưng với truy vấn thực tế tôi không nhận được quốc gia với nó.
tôi cố gắng:
var query = EntityQuery.from('Shippers')
.select('id, name, street, city')
.expand('City.Country');
nhưng tôi nhận được lỗi:
use of both 'expand' and 'select' in the same query is not currently supported
Câu hỏi của tôi: làm thế nào để có được nước?
CẬP NHẬT
Như Jay đề nghị, chúng ta có thể làm:
var query = EntityQuery.from('Shippers')
.select('id, name, street, city, city.country')
Bây giờ, tôi có một đối tượng city_Country
:
tôi không hiểu tại sao chúng ta đi t city_Country
này vì dữ liệu quốc gia đã có sẵn trong đối tượng thành phố \ quốc gia:
Hơn nữa nó mang lại cho tôi vấn đề vì tuyên bố tiếp theo của tôi cố gắng để ánh xạ dto tôi vào thực thể của tôi và đối tượng city_Country
này không tồn tại trong thực thể của tôi và đã xảy ra lỗi khi ánh xạ.
Dưới đây chúng ta thấy đối tượng thực thể của tôi và không có city_Country
đối tượng:
Tôi có phải làm điều gì đó đặc biệt trên bản đồ của tôi để tránh nó?
Dưới đây là chức năng của tôi cho các hoạt động lập bản đồ:
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;
}
Cảm ơn bạn đã giải thích này. Tại sao tôi sử dụng phép chiếu trong querries của tôi là vì một số thực thể có thể chứa nhiều thuộc tính 'nặng' như hình ảnh, ... trong trường hợp truy vấn một danh sách đơn giản thì tốt hơn là chỉ lấy các thuộc tính cần thiết hoặc tất cả các thuộc tính của thực thể ? – Bronzato
Một tùy chọn đơn giản là ánh xạ các thuộc tính "nặng" tới EntityType của riêng chúng với một từ một đến một thư từ với 'parentType' sẽ loại trừ chúng. Khác là để thực sự đo lường dấu chân perf/bộ nhớ của việc sử dụng các thực thể "đầy đủ" và xem nếu họ là đắt tiền như bạn nghi ngờ. Tôi bắt đầu với kiến trúc đơn giản nhất và chỉ phức tạp/tối ưu hóa nó một khi bạn chứng minh với chính mình rằng nó không thực hiện được. tức là đừng tối ưu hóa quá sớm. –