如何阻止 EntityQuery 调用元数据
How to block EntityQuery to call metadata
我正在关注 John papa 的 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 集合
在执行查询时有什么方法可以限制元数据调用吗?
请指正。
谢谢。
哈里·C
创建 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
});
};
我正在关注 John papa 的 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 集合
在执行查询时有什么方法可以限制元数据调用吗?
请指正。
谢谢。
哈里·C
创建 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
});
};