我在John爸爸的SPA之后,使用Hottowel,Angular和Breeze开发了一个示例应用程序。
在应用程序加载中,我正在获取元数据库
function fetchMetadataOnPageLoad()
{
var store = manager.metadataStore;
return store.fetchMetadata(serviceName)
.then(gotMetadata)
.catch(handleFail);
}
在上面的步骤中,正在从服务器加载元数据。
然后我导航到某个页面并尝试按照查询
获取数据 function GetAllUsers()
{
manager = emFactory.newManager();
var query = EntityQuery.from('users');
manager.executeQuery(query)
.then(querySucceeded, _queryFailed);
}`
`
然后我得到以下异常,因为查询在执行之前两次调用服务器元数据方法,但我已经在页面加载上获取了元数据。
错误:
元数据查询失败:breeze / Breeze / Metadata。无法解析或导入元数据:此MetadataStore中已存在类型。遇到服务器端错误 - 请参阅此对象上的entityErrors集合以获取更多详细信息
执行查询时是否有任何限制元数据调用的方法。
请纠正我。
谢谢。
Hari C
答案 0 :(得分:0)
创建EntityManager时,告诉它您将手动检索服务器元数据:
var dataService = new breeze.DataService({
serviceName: 'api/Datamart',
hasServerMetadata: false // solution here - will prevent metadata call on 1st query
});
var store = new breeze.MetadataStore();
store.fetchMetadata(dataService.serviceName)
.then(function () {
manager = new breeze.EntityManager({
dataService: dataService,
metadataStore: store
});
};