最初に Entity Framework コードで Breeze を使用して、Web サービスへの呼び出しからデータを返します。
数レベルの深さのデータ モデルがあります。この例では、多数の子「DefaultItems」を持つ「スケジュール」オブジェクトを返しています。各オブジェクトには、コストと、独自のプロパティを持つ単一の「タイプ」子があります。
これらのいずれかの Web サービスを直接呼び出すと、予想どおり、次のような結果が得られます。
{
$id:"1",
$type:"Schedule_06B188AC55B213FE4B13EA5B77D9C039007E80E9DB6F6841C055777A028C5F95, EntityFrameworkDynamicProxies-Core",
DefaultItems:[
{
$id:"2",
$type:"DefaultItem, Core",
RowId:"d422af5d-d6ca-46a3-a142-1feb93348e1d",
Cost:1,
Type:{
$id:"3",
$type:"Type, Core",
RowId:"38ed6d1b-d0b7-43cb-b958-2b2424b97759",
Type:"Type1"
},
Schedule:{
$ref:"1"
}
},
//more DefaultItem objects
{},
{}
],
RowId:"627eb2f2-ec74-4646-b3d1-d6423f84a2cd",
Start:"2010-01-18T00:00:00.000",
End:"2019-01-18T00:00:00.000"
}
これはブラウザに渡され、ノックアウトを使用してデータ オブジェクトにバインドされます。問題は、この時点で、データが 1 レベルの深さしかないように見えることです。
そのため、Schedule.Start と Schedule.End を問題なく取得できます。また、Schedule 内の DefaultItem オブジェクトを反復処理して、そのコストを取得することもできます。しかし、DefaultItem 内の Type オブジェクトは存在しません。
それらをバインドするために間違った名前を使用することではありません。ブラウザーのデバッガーで一時停止し、ブラウザーが持つ JSON にドリルダウンすると、Type オブジェクトがまったくなく、本来あるべき場所に空のオブジェクトさえありません。
なぜ Web サービスから出てくるのに、Breeze がブラウザに返すデータには含まれていないように見えるのでしょうか?