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

Entity 我可以删除不在缓存中的实体吗?,entity,breeze,delete-record,Entity,Breeze,Delete Record,我想从数据库中删除尚未从breeze查询中检索到的记录。实体尚未检索,因此它不在缓存中,但我从另一个操作中知道记录的键。以下是我尝试过的: 从管理器中创建新实体: manager.createEntity(entityNames.book); 设置ID: bookToDelete().bookID(1); // bookToDelete is a ko observable from step 1 更新状态: bookToDelete().entityAspect.setDeleted()

我想从数据库中删除尚未从breeze查询中检索到的记录。实体尚未检索,因此它不在缓存中,但我从另一个操作中知道记录的键。以下是我尝试过的:

从管理器中创建新实体:

manager.createEntity(entityNames.book);
设置ID:

bookToDelete().bookID(1);  // bookToDelete is a ko observable from step 1
更新状态:

bookToDelete().entityAspect.setDeleted(); 

保存更改时,此事务不包含在JSON中。仍处于“添加”状态时不能删除实体。我首先修改了。然后删除设置。没有看到任何副作用

明白了。仍处于“添加”状态时不能删除实体。我首先修改了。然后删除设置。没有看到任何副作用

明白了。仍处于“添加”状态时不能删除实体。我首先修改了。然后删除设置。没有看到任何副作用

明白了。仍处于“添加”状态时不能删除实体。我首先修改了。然后删除设置。没有看到任何副作用

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

因此,在您的情况下,在调用entityAspect.setDeleted之前,必须将实体设置为“已修改”或“未更改”。可以在调用entityAspect.setDeleted之前调用entityAspect.setUnchanged或entityAspect.setModified,也可以调用entityAspect.acceptChanges

请注意,您还必须确保“克隆”实体通过验证,如果实体上有并发字段,则还需要适当设置该字段

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
确保使用实体在服务器上通过验证和乐观并发检查所需的所有其他属性对其进行初始化


如果你没有这些支票,没问题。如果您进行了这样的检查,则不确定如何在不查询服务器的情况下获取这些值。

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

因此,在您的情况下,在调用entityAspect.setDeleted之前,必须将实体设置为“已修改”或“未更改”。可以在调用entityAspect.setDeleted之前调用entityAspect.setUnchanged或entityAspect.setModified,也可以调用entityAspect.acceptChanges

请注意,您还必须确保“克隆”实体通过验证,如果实体上有并发字段,则还需要适当设置该字段

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
确保使用实体在服务器上通过验证和乐观并发检查所需的所有其他属性对其进行初始化


如果你没有这些支票,没问题。如果您进行了这样的检查,则不确定如何在不查询服务器的情况下获取这些值。

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

因此,在您的情况下,在调用entityAspect.setDeleted之前,必须将实体设置为“已修改”或“未更改”。可以在调用entityAspect.setDeleted之前调用entityAspect.setUnchanged或entityAspect.setModified,也可以调用entityAspect.acceptChanges

请注意,您还必须确保“克隆”实体通过验证,如果实体上有并发字段,则还需要适当设置该字段

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
确保使用实体在服务器上通过验证和乐观并发检查所需的所有其他属性对其进行初始化


如果你没有这些支票,没问题。如果您进行了这样的检查,则不确定如何在不查询服务器的情况下获取这些值。

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

因此,在您的情况下,在调用entityAspect.setDeleted之前,必须将实体设置为“已修改”或“未更改”。可以在调用entityAspect.setDeleted之前调用entityAspect.setUnchanged或entityAspect.setModified,也可以调用entityAspect.acceptChanges

请注意,您还必须确保“克隆”实体通过验证,如果实体上有并发字段,则还需要适当设置该字段

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
确保使用实体在服务器上通过验证和乐观并发检查所需的所有其他属性对其进行初始化


如果你没有这些支票,没问题。如果进行了此类检查,我不确定在不查询服务器的情况下如何获得这些值。

这是我对breeze还不熟悉的两个术语:克隆实体和并发