5

Durandal/breeze を使用して asp.net ソリューションを開発しています。

すべての荷送人を取得するためのコードは次のとおりです。

var query = EntityQuery.from('Shippers')
               .select('id, name, street, city');

return manager.executeQuery(query)
        .then(querySucceeded)
        .fail(queryFailed);

関連するモデルは次のとおりです。

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

ここで、国も含める必要があります

public class Country
{
    [Key]
    public int Id { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
}

しかし、実際のクエリでは国を取得できません。

私は試します:

var query = EntityQuery.from('Shippers')
               .select('id, name, street, city')
               .expand('City.Country');

しかし、私はエラーが発生します:

use of both 'expand' and 'select' in the same query is not currently supported

私の質問: 国を取得する方法は?


アップデート

Jay が提案したように、次のことができます。

var query = EntityQuery.from('Shippers')
       .select('id, name, street, city, city.country')

今、私はcity_Countryオブジェクトを手に入れました:

ここに画像の説明を入力

city_Country国のデータは city \ country オブジェクトで既に利用可能であるため、なぜこれを取得したのかわかりません。

ここに画像の説明を入力

さらに、次のステートメントで dto をエンティティにマップしようとすると、このcity_Countryオブジェクトがエンティティに存在せず、マッピング時にエラーが発生するため、問題が発生します。

以下にエンティティ オブジェクトが表示されますが、city_Countryオブジェクトはありません。

ここに画像の説明を入力

それを避けるために、マッピングで何か特別なことをしなければなりませんか?

以下は、マッピング操作のための私の関数です:

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

2 に答える 2