我可以删除不在缓存中的实体吗?

时间:2013-12-06 19:03:36

标签: entity breeze delete-record

我想从数据库中删除尚未从微风查询中检索到的记录。该实体尚未被检索,因此它不在缓存中,但我知道来自另一个操作的记录的KEY。这是我尝试过的:

从经理创建一个新实体:

manager.createEntity(entityNames.book);

设置ID:

bookToDelete().bookID(1);  // bookToDelete is a ko observable from step 1

更新州:

bookToDelete().entityAspect.setDeleted(); 

当我保存更改时,此事务不包含在JSON

2 个答案:

答案 0 :(得分:3)

你几乎拥有它。在“已添加”实体上调用 entityAspect.setDeleted 会将其直接移动到“已分离”状态,这实际上会将其从EntityManager中删除,因此无法保存。这是故意的。它处理您创建实体并稍后删除它的情况。在这种情况下,没有要保存的实体。

因此,在您的情况下,您必须在调用 entityAspect.setDeleted 之前使实体“已修改”或“未更改”。您可以通过在调用 entityAspect.setDeleted 之前调用 entityAspect.setUnchanged entityAspect.setModified 来执行此操作,也可以调用 entityAspect.acceptChanges

请注意,您还必须确保'clone'实体通过验证,如果您在实体上有并发字段,则还需要适当地设置它。

12月7日更新

您可以在一个步骤中创建标记为删除状态的图书实体,如下所示:

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)

得到了它。在仍处于添加状态时无法删除实体。我先设置修改。然后setdeleted。没有看到任何副作用。