Breeze JS:实体错误阻止了客户端的补丁

时间:2014-07-08 11:06:24

标签: entity-framework breeze

我的客户端应用程序我正在调用entityManager.saveChanges将所有当前更改的实体从客户端发送到服务器。然后在服务器上的BeforeSaveEntity事件中,我在每个实体上执行一些服务器端验证,以查看是否应该从保存映射中排除它。因此,例如,我的实体可能具有描述的值太长。所以我从BeforeSaveEntity返回false,并生成一个新的EntityError,然后将其添加到saveResult.EntityErrors集合中。所有未从保存地图中排除的有效记录然后成功保存,我的saveResult将返回给客户端。但由于此单个实体错误,返回的实体的自动修补程序不会在客户端上发生。我查看了源代码,基本上似乎有一个检查,如果saveResult.EntityErrors集合中有任何内容,请不要打扰补丁。但是只有一个实体没有被保存,所以我仍然希望能够修补其他实体。这种行为是设计的吗?我希望能够从保存中排除某些实体(我可以使用BeforeSaveEntity事件做),但似乎没有任何方法可以使用内置机制将实体错误返回给客户端,而不是完全补丁被遗弃。

1 个答案:

答案 0 :(得分:0)

如果可能的话,在微风中保存是事务性的(某些后端提供者,例如MongoDb不是因为他们不支持它)。这意味着如果在保存包中的任何实体遇到任何故障,则会恢复整个保存并将错误返回给客户端。这是设计的。