您好,非常感谢您的帮助。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。
请帮我理解我做错了什么。
非常感谢! 迈克
当服务器有适当的响应时,会调用acceptChanges方法。响应应包含成功保存的每个实体。请检查您的服务器响应。 –
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
看起来您的服务器响应不包含实体类型,所以Breeze无法将其与缓存中的实体。您可能需要调整服务器端JSON序列化设置。 –