模擬データサービスを実装しようとしています。新しいデータ型を登録し、initデータを使用して新しいエンティティを作成していますが、クエリを実行すると、「このクエリに使用できるメタデータがありません」というエラーが表示されます。なぜそれが起こったのか理解できません。私のエンティティマネージャーには、登録したデータ型が含まれています。また、作成されたエンティティのコレクションも含まれています。名前空間が原因でクエリが失敗したと思ったので、「Tag:#Football.Models」をクエリしようとしました。同じ結果です。また、executeLocally()メソッドを試しましたが、同じものです...
手順:
1)そよ風のデータサービス、データストア、マネージャーを作成します。
2)新しいメタデータタイプを作成し、データストアに追加します。
3)登録されたタイプの新しいエンティティを作成し、いくつかのモックデータで初期化します。
4)クエリを実行してエンティティのコレクションを取得します。手順4で失敗します-エラーが発生します:「エラー:このクエリに使用できるメタデータがありません」
これが私のコードです:
//1st step
var mockDataService = new breeze.DataService({
serviceName: "mockDataService",
hasServerMetadata: false
});
var mockMetadataStore = new breeze.MetadataStore(
{
namingConvention: breeze.NamingConvention.camelCase
});
var queryOptions = new breeze.QueryOptions({
fetchStrategy: breeze.FetchStrategy.FromLocalCache
});
var entityManager = new breeze.EntityManager({
dataService: mockDataService,
metadataStore: mockMetadataStore,
queryOptions: queryOptions
});
// 2nd step
var et = new breeze.EntityType({
shortName: "Tag",
namespace: "Football.Models",
autoGeneratedKeyType: breeze.AutoGeneratedKeyType.Identity,
defaultResourceName: "tags"
});
et.addProperty(new breeze.DataProperty({
name: "id",
dataType: breeze.DataType.Int32,
isNullable: false,
isPartOfKey: true
}));
et.addProperty(new breeze.DataProperty({
name: "name",
dataType: breeze.DataType.String,
isNullable: false
}));
mockMetadataStore.addEntityType(et);
mockMetadataStore.registerEntityTypeCtor("Tag", null);
//3rd step
etType = mockMetadataStore.getEntityType("Tag");
var newTag = etType.createEntity({id:1,name:"tag"});
entityManager.addEntity(newTag);
// 4th step
var a = breeze.EntityQuery
.from("Tag")
.using(entityManager).execute()
.then(querySucceed).fail( function(err) {
alert(err);
// and i got an error:
// Error: There is no metadata available for this query
});;