クライアントに返したい大きなオブジェクト グラフ (モデル全体の概要) があるので、それを 1 つの大きなオブジェクトとして返すことにしました (問題のオブジェクトとして返します)。
ただし、Breeze では、各依存オブジェクトの最初のオブジェクトのみを取得しています。たとえば、2 つの「車両」オブジェクトを持つ「ポリシー」オブジェクトがあります。車両は 1 台しか表示されません (var p = data.results[0] にブレークポイントを設定しても)。呼び出しから戻ってくる json には 2 台の車両が表示されますが、そよ風は 1 台しかキャッチしていません。
他のものを取得するにはどうすればよいですか? これが私が行っている呼び出しです:
var getPolicyByPolicyNumber = function (lob, policynumber, policyObservable) {
var params = {};
params['lOBCd'] = lob;
params['policyNumber'] = policynumber;
var query = EntityQuery.from('PolicyInquiry')
.withParameters(params);
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
var p = data.results[0];
p.completeTree(true);
return policyObservable(p);
}
};
そして、そよ風コントローラーには次のものがあります。
[System.Web.Http.HttpGet]
public Policy PolicyInquiry(string lOBCd, string policyNumber)
{
UserProfile userProfile = _contextProvider.Context.UserProfiles.SingleOrDefault(u => u.UserName == WebSecurity.CurrentUserName);
var policy = Uow.PolicyServices.GetPolicy(userProfile.BrokerId, userProfile.AgencyId, "csio:" + lOBCd, policyNumber);
return policy;
}
以下は、ポリシーと手段を示す簡略化されたモデルです。
public class Policy
{
public int Id { get; set; }
public string PolicyNumber { get; set; }
[InverseProperty("Policy")]
public ICollection<Vehicle> Vehicles { get; set; }
// other fields removed
}
public class Vehicle
{
public int Id {get; set}
public string ItemId { get; set; }
// other fields removed
//Foreign Keys
public int PolicyId { get; set; }
[IgnoreDataMember]
[ForeignKey("PolicyId")]
[Required]
public virtual Policy Policy { get; set; }
}