現在、breast.js (バージョン 1.3.4) を使用して小さな Hmtl/JavaScript アプリケーションを開発しています。OData プロトコルを使用してエンティティをクエリするように構成しました。
シンプルなエンティティで問題なく動作します。複雑なエンティティ (電話番号と住所の 2 つの複雑なタイプのプロパティを持つ連絡先エンティティ) をクエリしている場合、次のエラーが表示されます。
"TypeError: Cannot call method '_createInstanceCore' of null
at ctor.startTracking (<ServerAddress>/scripts/breeze.debug.js:14086:49)
at Array.forEach (native)
at ctor.startTracking (<ServerAddress>1/scripts/breeze.debug.js:14069:12)
at new ctor <ServerAddress>/scripts/breeze.debug.js:2952:52)
at proto._createEntityCore (<ServerAddress>1/scripts/breeze.debug.js:6478:9)
at mergeEntity <ServerAddress>/scripts/breeze.debug.js:12458:39)
at processMeta (<ServerAddress>/scripts/breeze.debug.js:12381:24)
at visitAndMerge (<ServerAddress>/scripts/breeze.debug.js:12361:16)
at <ServerAddress>/scripts/breeze.debug.js:12316:33
at Array.map (native)
From previous event:
at executeQueryCore (<ServerAddress>/scripts/breeze.debug.js:12290:77)
at proto.executeQuery (<ServerAddress>/scripts/breeze.debug.js:11243:23)
at DataContext.executeCachedQuery (<ServerAddress>/App/services/datacontext.js:138:33)
at DataContext.getContactsBySearchParams (<ServerAddress>/App/services/datacontext.js:111:25)
at Search.searchCmd.ko.asyncCommand.execute (<ServerAddress>/App/viewmodels/search.js:34:38)
at Search.ko.asyncCommand.self.execute (<ServerAddress>/scripts/knockout.command.js:57:29)
at HTMLButtonElement.ko.bindingHandlers.event.init (<ServerAddress>/scripts/knockout-2.2.1.debug.js:2318:66)"
コードのデバッグ中に、複合プロパティ インスタンスの dataType フィールドが null であることがわかります。
val = prop.dataType._createInstanceCore(entity, prop.name);
また、complexTypeName に次のような奇妙な値の書式があることもわかります。
<ComplexTypeName>):#<NameSpace>
奇妙な複合型名に関して気付いたもう 1 つの点は、entities プロパティが複合型のコレクションであることです (連絡先には複数のアドレスがある場合があります)。行 14085 のチェックは常に isScalar = true を返しますが、代わりに複雑な配列を作成する必要があります。
複合型の OData メタデータに問題はありますか? この問題をどのように解決できますか?
ご回答ありがとうございます。
乾杯、マーク