Вы не можете использовать manager.metadataSote.getEntityType («Сотрудники») до тех пор, пока метаданные не будут получены с сервера. По умолчанию это происходит во время первой операции запроса, но ваш код пытается использовать метаданные до их восстановления.
Кроме того, я думаю, что вы путаете имя своего ресурса «Сотрудники» с типом экземпляров, возвращаемых вашим ресурсом, возможно, «Сотрудник». Я также хотел бы проверить, является ли тип данных вашего ключа числовым или строковым. В приведенном ниже примере предполагается его числовое значение (в отличие от вашего примера, где тип данных ключа, по-видимому, является строкой, потому что вы цитируете его).
Так у вас есть два подхода, либо заставить метаданные быть неправдоподобными, прежде чем составить запрос, как это:
manager = new breeze.EntityManager(serviceName);
manager.fetchMetadata().then(function() {
var empType = manager.metadataStore.getEntityType("Employee");
var entityKey = new EntityKey(empType, 1);
var query = EntityQuery.fromEntityKey(entityKey);
// if you want to also see the queries details
query = query.expand("Details");
return manager.executeQuery(query);
}).then(function (data) {
var results = data.results;
ok(results.length === 1, "should have returned a single record");
var emp = results[0];
));
или, если вы знаете имя строкового «ключ» («Id» в пример ниже) поле, используйте его напрямую
manager = new breeze.EntityManager(serviceName);
var query = EntityQuery.from("Employees")
.where("Id", "==", 1)
.expand("Details");
manager.executeQuery(query).then(function(data) {
var results = data.results;
var emp = results[0];
});
Где вы определяете свои метаданные? –