Angularjs breezejs实体框架
我在获取最新版本的Breeze Angular client以查询我的Breeze服务时遇到问题,该服务是使用Angularjs breezejs实体框架,angularjs,entity-framework,breeze,Angularjs,Entity Framework,Breeze,我在获取最新版本的Breeze Angular client以查询我的Breeze服务时遇到问题,该服务是使用VS2013、EF6和WebAPI2编写的 我的服务向我的端点(url)提供元数据和json;但是,我似乎在正确获取客户机设置上的dataservice.js文件时遇到了问题。只需将服务注入控制器,就会触发未定义的错误,这不是函数错误 我的代码与原始示例非常接近: 我是否遗漏了什么,似乎微风应该是简单的设置。 是否有EF6,BreezeAngular的工作示例,即WebAPI2;但是,不
VS2013
、EF6
和WebAPI2
编写的
我的服务向我的端点(url)提供元数据和json
;但是,我似乎在正确获取客户机设置上的dataservice.js
文件时遇到了问题。只需将服务注入控制器,就会触发未定义的错误,这不是函数错误
我的代码与原始示例非常接近:
我是否遗漏了什么,似乎微风应该是简单的设置。
是否有EF6
,BreezeAngular
的工作示例,即WebAPI2
;但是,不是OData吗
先谢谢你
//////////////////////
// dataservice.js //
//////////////////////
/* dataservice: data access and model management layer
* relies on Angular injector to provide:
* $timeout - Angular equivalent of 'setTimeout'
* breeze - the Breeze.Angular service (which is breeze itself)
* logger - the application's logging facility
*/
(function() {
angular.module('app').factory('dataservice', ['$http', '$q', '$timeout', 'breeze', 'logger', dataservice]);
function dataservice( $http, $q, $timeout, breeze, logger) {
var serviceName = 'breeze/userPortal'; // route to the same origin Web Api controller
// *** Cross origin service example ***
// When data server and application server are in different origins
//var serviceName = 'http://sampleservice.breezejs.com/api/todos/';
var manager = new breeze.EntityManager(serviceName);
manager.enableSaveQueuing(true);
//REVEALING MODULE
var service = {
addPropertyChangeHandler: addPropertyChangeHandler,
createuser: createuser,
deleteuser: deleteuser,
getusers: getusers,
hasChanges: hasChanges,
purge: purge,
reset: reset,
removePropertyChangeHandler: removePropertyChangeHandler,
saveChanges: saveChanges
};
return service;
/*** implementation details ***/
function addPropertyChangeHandler(handler) {
// Actually adds any 'entityChanged' event handler
// call handler when an entity property of any entity changes
return manager.entityChanged.subscribe(function(changeArgs) {
var action = changeArgs.entityAction;
if (action === breeze.EntityAction.PropertyChange) {
handler(changeArgs);
}
});
}
function createuser(initialValues) {
return manager.createEntity('user', initialValues);
}
function deleteuser(user) {
user && user.entityAspect.setDeleted();
}
function getusers() {
var query = breeze.EntityQuery
.from("users")
.orderBy("LastName");
}
var promise = manager.executeQuery(query).catch(queryFailed);
return promise;
function queryFailed(error) {
logger.error(error.message, "Query failed");
return $q.reject(error); // so downstream promise users know it failed
}
});
function hasChanges() {
return manager.hasChanges();
}
function handleSaveValidationError(error) {
var message = "Not saved due to validation error";
try { // fish out the first error
var firstErr = error.entityErrors[0];
message += ": " + firstErr.errorMessage;
} catch (e) { /* eat it for now */ }
return message;
}
function removePropertyChangeHandler(handler) {
// Actually removes any 'entityChanged' event handler
return manager.entityChanged.unsubscribe(handler);
}
function saveChanges() {
return manager.saveChanges()
.then(saveSucceeded)
.catch(saveFailed);
function saveSucceeded(saveResult) {
logger.success("# of users saved = " + saveResult.entities.length);
logger.log(saveResult);
}
function saveFailed(error) {
var reason = error.message;
var detail = error.detail;
if (error.entityErrors) {
reason = handleSaveValidationError(error);
} else if (detail && detail.ExceptionType &&
detail.ExceptionType.indexOf('OptimisticConcurrencyException') !== -1) {
// Concurrency error
reason =
"Another user, perhaps the server, " +
"may have deleted one or all of the users." +
" You may have to restart the app.";
} else {
reason = "Failed to save changes: " + reason +
" You may have to restart the app.";
}
logger.error(error, reason);
// DEMO ONLY: discard all pending changes
// Let them see the error for a second before rejecting changes
$timeout(function() {
manager.rejectChanges();
}, 1000);
return $q.reject(error); // so downstream promise users know it failed
}
}
//#region demo operations
function purge(callback) {
return $http.post(serviceName + '/purge')
.then(function () {
logger.success("database purged.");
manager.clear();
if (callback) callback();
})
.catch(function (error) {
logger.error("database purge failed: " + error);
return $q.reject(error); // so downstream promise users know it failed
});
}
function reset(callback) {
return $http.post(serviceName + '/reset')
.then(function () {
logger.success("database reset.");
manager.clear();
if (callback) callback();
})
.catch(function (error) {
logger.error("database reset failed: " + error);
return $q.reject(error); // so downstream promise users know it failed
});
}
//#endregion
您的函数结构不正确。您在
函数hasChanges(){
之前提前终止了数据服务
函数。此函数及其后声明的所有函数不再在数据服务
中定义
使用显示模块模式,您尝试将服务.hasChanges
分配给hasChanges
函数。但是hasChanges
函数未在数据服务
内部定义,而是在数据服务
外部定义,因此分配返回未定义
,因此错误未定义ned不是一个函数。
移动
数据服务
函数}的关闭块代码>向下,以包含它的所有函数。在我看来,此函数的一半在错误的范围内。以函数hasChanges()开头的所有内容({
不在数据服务
函数的范围内,这是故意的吗?请注意关闭功能块的位置})代码>谢谢,这确实修复了未定义的错误!我得到了一些新的错误,如果它们不是重复的,我将发布这些错误。