BreezeJs 1.3.5 で WebAPI V4.0.30506.0 (これは安定版である必要があります) を使用していますが、何らかの理由で expand キーワードを使用すると子エンティティが取得されません。子エンティティを取得するにはどうすればよいですか?
これが私のデータモデルの縮小版です。
public class Policy
{
public int Id { get; set; }
public string PolicyNumber { get; set; }
public ICollection<Vehicle> Vehicles { get; set; }
}
public class Vehicle
{
public int Id { get; set; }
public string Manufacturer { get; set; }
public string Model { get; set; }
public int ModelYear { get; set; }
public virtual Policy Policy { get; set; }
}
私の取得は次のようになります。
var getPolicies = function (policyObservable, getFromServer) {
if (!getFromServer) {
var pLocal = getLocal('Policies', 'policyNumber');
if (pLocal.length > 0 ){
policyObservable(pLocal);
return Q.resolve();
}
}
var query = EntityQuery.from('Policies')
.expand("Vehicles");
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
// handle the ajax callback
function querySucceeded(data) {
if (policyObservable) {
// I pause here in Chrome
policyObservable(data.results);
}
log('retrieved policy!', data, true);
}
};
Chrome で querySucceeded の data.results を見ると、一連のポリシーが表示されますが、子車両はありません。ネットワークタブをチェックインすると、次の呼び出しが表示されます。
http://localhost/breeze/breeze/Policies?$expand=Vehicles
結果には Vehicles があります。
これが私が返すもののスニペットです:
[ { "$id": "1", "$type": "Eclipse.Model.Policy, Eclipse.Model", "Id": 1, "PolicyNumber": "PHHOAP00", "Vehicles": [ { "$ id": "2", "$type": "Eclipse.Model.Vehicle, Eclipse.Model", "Id": 1, "Manufacturer": "ac,", "Model": "In", "ModelYear" : 2006、「ポリシー」: { "$ref": "1" },...
編集:関連しているかどうかはわかりませんが、コンソールに次のように入力すると、空の配列が表示されます。
console.log(data.results[0].entityAspect._entityKey.entityType.navigationProperties)
console.log(data.results[0].entityAspect._entityKey.entityType.foreignKeyProperties)