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