我想更新一個BreezeJS實體時,我調整了一個單一的屬性,沒有別的(我沒有做刪除)。我收到以下錯誤信息:BreezeJS總是返回存儲更新,插入或刪除語句影響保存更改上意想不到的行數
{「$ id」:「1」,「$ type」:「System.Web.Http.HttpError,System.Web.Http」,「Message」:「An error has發生「,」ExceptionMessage「:」存儲更新,插入或刪除語句影響了意外數量的行(0)。實體可能已被修改或刪除,因爲實體已加載刷新ObjectStateManager條目「,」ExceptionType「:」 System.Data.Entity.Infrastructure.DbUpdateConcurrencyException「,」StackTrace「:」在System.Data.Entity.Internal.InternalContext.SaveChanges()\ r \ n在Breeze.ContextProvider.EF6.EFContextProvider`1.SaveChangesCore(SaveWorkState saveWorkState) \ r \ n在Breeze.ContextProvider.ContextProvider.OpenAndSave(SaveWorkState saveWorkState)\ r \ n在Breeze.ContextProvider.ContextProvider.SaveChanges(JObject saveBundle,TransactionSettings transactionSettings)\ r \ n在Toriga.Prototype.Html5Portal.Controllers.DataController。薩veChanges(JObject saveBundle)
我被告知這是一個併發異常,但我總是數據庫的唯一用戶,所以它不能。我已經檢查過返回的數據對象的主鍵是否具有正確的主鍵。
我的微風控制器:
readonly EFContextProvider<Context> _contextProvider = new EFContextProvider<Context>();
public DataController(IUserManager userManager) : base(userManager) { }
// ~/breeze/Data/Metadata
[HttpGet]
public string Metadata()
{
return _contextProvider.Metadata();
}
// ~/breeze/Data/Jobs
[HttpGet]
public async Task<IQueryable<Work>> Jobs()
{
var currentUser = await UserManager.FindById(Guid.Parse(User.Identity.GetUserId()));
var companyId = currentUser.CompanyId.Value;
return _contextProvider.Context.WorkFolder.Where(w => w.CompanyId == companyId).SelectMany(i => i.Works).Where(j => j.IsDeleted == false);
}
我們使用客戶端的(多簡寫爲)工藝是先「同步」的數據,本地存儲和以後更新的任何變化。
Firstlyt,在本地存儲加載數據和存儲:
var jobsQuery = new breeze.EntityQuery.from("Jobs");
em.fetchMetadata().then(function() {
em.executeQuery(jobsQuery).then(function (data) {
_jobs = data.results;
var emCache = em.exportEntities();
store.setItem("EmCache", emCache);
}, function (data) {
deferred.reject(data); // passes back unsuccessful
});
}, function (data) {
console.log(data);
deferred.reject(data); // passes back unsuccessful
});
然後當他們按同步以後,我們發出:
em.saveChanges().then(function() {
deferred.resolve();
}, function (error) {
// fail promise
console.log(error);
deferred.reject(error.message);
});
,我們總是得到上述錯誤。數據模型非常複雜,儘管我所做的改變是微不足道的。抱歉代碼示例很簡短,但是它來自一個更大的項目,它有許多依賴關係。我挑出了要點。任何幫助或線索,看看爲什麼會發生這種情況將不勝感激,似乎沒有太多關於這個問題。