i'm trying to implement mock dataservice. I'm registering new data type, creating a new entity with init data, but on executing the query i'm getting an error:"There is no metadata available for this query". I can't figure out why it happends. My entity manager contains the datatype i had registered, also it contains a collection of created entities. I thought my query fails because of namespace so i tried to query "Tag:#Football.Models" - the same result. Also i had tried executeLocally() method, same stuff...
Steps:
1) Create breeze dataservice, datastore and manager.
2) Create new metadata type and add it to datastore.
3) Create new entity of registered type and init it by some mock data.
4) Execute query to get collection of entities; Fail at step 4 - an error occurs: "Error: There is no metadata available for this query"
Here is my code:
//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
});;