所以我目前正在使用實體框架,Breeze和Angular的項目,現在我卡住了。我檢索一個實體,更改一個屬性,然後嘗試保存。但即使EntityState指出它已被修改,它也不會保存。爲什麼這個實體沒有保存? [BreezeJS/AngularJS]
所以我猜出於某種原因,它失去了它對Breeze的約束力。我做的改變反映在頁面上,所以我認爲Angular仍然「看到」它。
這裏是我的控制器相關代碼:
trService.getProposalById($route.current.params.Id)
.then(function (query) {
$scope.proposal = query.results[0];
trService.getTrById($scope.proposal.TrID)
.then(function (query) {
$scope.itinerary = query.results[0];
})
.then(function (query) {
//Something irrelevant
});
});
檢查$ scope.proposal之後,這表明它是一個實體(ctor.proto的東西)。然後,我當我批准/節約功能:
$scope.onApproveConfirm = function() {
console.log("Before: " + $scope.proposal.entityAspect.entityState.name);
$scope.proposal.IsApproved = 2;
console.log("After: " + $scope.proposal.entityAspect.entityState.name);
trService.saveChanges($scope.proposal, undefined, function (result) {
console.log("Saved: " + result.entities.length);
}, function() {
console.log("Save failed");
});
};
在控制檯輸出看起來是這樣的:
Before: Unchanged
After: Modified
Saved: 0
我用我的所有其他實體的SaveChanges沒有任何問題。在我檢索提案的位置和更改IsApproved屬性的位置之間的代碼中,我從不訪問它。那麼誰能從中看到哪裏出了問題?如果你需要任何額外的信息我很樂意提供。
此外,如果我在保存代碼直接檢索提案後它保存。
感謝您的廣泛答覆。我可能應該提到的是,這是一個我剛剛繼續的項目,在調用Breeze的saveChanges之前,這裏提到的saveChanges()會做一些額外的工作。 我是'櫻桃'的原因是,我在同一時間編輯一個不應該保存的其他實體。是的,該服務正在工作。 我實際上決定爲此選擇其他路徑。 – Peter
那麼一切都好?我放心了。快樂的編碼! – Ward