2017-10-13 68 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 
} 

史蒂夫施密特 - 非常感谢你的帮助,你是正确的在你的评估中,这导致了我的解决方案!