2017-10-13 62 views
0

您好,非常感謝您的幫助。BreezeJS EntityManager.saveChanges()未調用acceptChanges()

我使用

"breeze-bridge-angular": "^4.0.1", 
"breeze-client": "^1.6.3", 

用於在acceptChanges()的文檔說,「微風調用後成功保存此方法。」並不鼓勵直接調用它。

http://breeze.github.io/doc-js/entitymanager-and-caching.html

然而,在我的經驗,這個簡單的代碼所示,它並不:

let day = this.em.createEntity("Day", { 'note': '', 'owner_id': 1}); 
    await this.em.saveChanges(); 
    let changes = this.em.hasChanges(); // true 
    this.em.acceptChanges(); 
    changes = this.em.hasChanges(); // false 

實體節創建於DB就好了,但如果在acceptChanges()不手動調用,隨後的saveChanges()將複製之前創建的Day Entity,因爲其狀態未重置爲UNCHANGED。

請幫我理解我做錯了什麼。

非常感謝! 邁克

+0

當服務器有適當的響應時,會調用acceptChanges方法。響應應包含成功保存的每個實體。請檢查您的服務器響應。 –

+0

POST RESPONSE to SaveChanges()via Fiddler 4 {「Entities」:[{「id」:62,「datetimme」:null,「note」:「」,「owner_id」:1,「gps」:null,感情 「:[],」 記憶 「:[],」 思考 「:[],」 關係 「:空,」 會話 「:[]}],」 KeyMappings 「:[{」 EntityTypeName 「:」 test_model.Day」 ,「TempValue」: - 2,「RealValue」:62}],「DeletedKeys」:[],「Errors」:null} – Mike

+0

看起來您的服務器響應不包含實體類型,所以Breeze無法將其與緩存中的實體。您可能需要調整服務器端JSON序列化設置。 –

回答

0

我回到基本在服務器端,發現​​我失蹤了,從我的控制器屬性:

[BreezeController]

沒有這個屬性的一切繼續工作(獲取元數據,查詢,本地創建,保存到數據庫) - 但是缺乏這個屬性,客戶端實體管理器拒絕將持久實體標記爲正確保存,因爲對客戶端的響應是非常不同的:

添加此屬性,服務器的響應,現在看起來是這樣的:

{ 
    "$id": "1", 
    "$type": "Breeze.ContextProvider.SaveResult, Breeze.ContextProvider", 
    "Entities": [ 
    { 
     "$id": "2", 
     "$type": "reflectionship_model.blah, blah-model", 
     "Id": 8, 
     "X": 999, 
     "Y": "blah" 
    } 
    ], 
    "KeyMappings": [ 
    { 
     "$id": "3", 
     "$type": "Breeze.ContextProvider.KeyMapping, Breeze.ContextProvider", 
     "EntityTypeName": "blah_model.Blah", 
     "TempValue": -1, 
     "RealValue": 8 
    } 
    ], 
    "DeletedKeys": [ ], 
    "Errors": null 
} 

JSON結果W/O [BreezeController]:

{ 
    "Entities": [ 
    { 
     "id": 62, 
     "datetimme": null, 
     "blah": "999", 
    } 
    ], 
    "KeyMappin‌​gs": [ 
    { 
     "EntityTypeNam‌​e": "test_model.Day", 
     ‌​"TempValue": -2, 
     "Real‌​Value": 62 
    } 
    ], 
    "Deleted‌​Keys": [ ], 
    "Errors": nu‌​ll 
} 

史蒂夫施密特 - 非常感謝你的幫助,你是正確的在你的評估中,這導致了我的解決方案!