我想从数据库中删除尚未从微风查询中检索到的记录。该实体尚未被检索,因此它不在缓存中,但我知道来自另一个操作的记录的KEY。这是我尝试过的:
从经理创建一个新实体:
manager.createEntity(entityNames.book);
设置ID:
bookToDelete().bookID(1); // bookToDelete is a ko observable from step 1
更新州:
bookToDelete().entityAspect.setDeleted();
当我保存更改时,此事务不包含在JSON
中答案 0 :(得分:3)
你几乎拥有它。在“已添加”实体上调用 entityAspect.setDeleted 会将其直接移动到“已分离”状态,这实际上会将其从EntityManager中删除,因此无法保存。这是故意的。它处理您创建实体并稍后删除它的情况。在这种情况下,没有要保存的实体。
因此,在您的情况下,您必须在调用 entityAspect.setDeleted 之前使实体“已修改”或“未更改”。您可以通过在调用 entityAspect.setDeleted 之前调用 entityAspect.setUnchanged 或 entityAspect.setModified 来执行此操作,也可以调用 entityAspect.acceptChanges 的
请注意,您还必须确保'clone'实体通过验证,如果您在实体上有并发字段,则还需要适当地设置它。
您可以在一个步骤中创建标记为删除状态的图书实体,如下所示:
var book = manager.createEntity(entityNames.book,
{ BookID: 1 }, // use initializer to set the key
breeze.EntityState.Deleted); // creates the entity in the Deleted state
确保使用实体在服务器上传递验证和乐观并发检查所需的所有其他属性对其进行初始化。
如果您没有这些检查,没问题。如果你确实有这样的检查,不知道如何在不查询服务器的情况下获得这些值。
答案 1 :(得分:0)