Triggers breeze和sql server触发器
Breeze在保存这些数据时没有看到服务器端的数据发生了什么。Breeze团队表示,必须重新查询才能更新数据。可以考虑在此保存过程中同步执行的操作,如sql触发器(EXP.After Insert),因为这些操作可以在保存过程中转换实体,以便在客户端执行:这对于不是由Breeze生成的新键(如多部分键)非常有用。我很难解决这个问题。帮忙 更新1: 如果这是Breeze的原则,那很可能是一个bug 1) 触发器(在服务器端)是实体(表)的一部分 2) 使用的框架:Triggers breeze和sql server触发器,triggers,breeze,key-generator,Triggers,Breeze,Key Generator,Breeze在保存这些数据时没有看到服务器端的数据发生了什么。Breeze团队表示,必须重新查询才能更新数据。可以考虑在此保存过程中同步执行的操作,如sql触发器(EXP.After Insert),因为这些操作可以在保存过程中转换实体,以便在客户端执行:这对于不是由Breeze生成的新键(如多部分键)非常有用。我很难解决这个问题。帮忙 更新1: 如果这是Breeze的原则,那很可能是一个bug 1) 触发器(在服务器端)是实体(表)的一部分 2) 使用的框架: 服务器端框架:.NET fra
- 服务器端框架:.NET framework 4.5
- 客户端框架:Breeze 1.3.5
- 视图框架:淘汰2.2.1
function saveTousRecos() {
return manager.saveChanges()
.then(success)
.fail(fail);
function success(saveResult) {
/* do your post-save work here */
axi = saveResult.entities[0].jobtab();
// axi is an identity key generated at server and sent back to client by Breeze
// result : Breeze value = (195), the same as server-side (195)
ara = saveResult.entities[0].seqtab();
// ara is a property value inserted by sql FOR INSERT trigger,
// result : Breeze value = (NULL), server-side has (13)
logger.log("Saving succeded... ");
}
function fail(error) {
logger.log("Saving failed: " + error.message);
}
}
注意:SQL触发器插入的所有值都不可见,除非您从服务器(而不是缓存)重新调用实体;似乎是一种解决办法,我想这不是解决办法
更新2:
我认为Breeze认为我的回归实体与OData类似
1) 从我的Breeze Api控制器中,我使用以下内容:
return _contextProvider.Context.clients.Where(uc => uc.refclie == rqnoclie);
2) 微风说:
使用OData,服务器端计算字段值的任何更改在更新后都将无法在Breeze中使用。如果需要刷新这些值,则必须重新查询
3) 因此,从现在起,我的解决方案是重新查询(不是好消息),以获得计算或触发的结果。希望BeforeSaveEntity拦截器的未来能够解决这个问题。或者如何为Breeze获取纯实体(不是OData,而是计算或触发的服务器端)?有没有办法摆脱这个麻烦?Breeze
EFContextProvider
重新查询它保存的实体并将它们发送回客户端。因此,如果SQL触发器更新了正在保存的实体,它会将SQL触发器更新的值发送回客户端。例如,如果保存实体“A”并且触发器更新了实体“A”的值,EFContextProvider
将重新查询“A”,并将更新后的值发送给客户端
如果您能证明这是不正确的,请告诉我们。我相信那会是一个错误
微风不知道。。。我不知道。。。关于由SQL触发器更新的其他实体。Breeze在保存实体“A”时无法知道实体“B”已由触发器更新,因此没有理由查询“B”并将其发送给客户端。@sbelini感谢Ward的帮助,但我认为困难仍然存在。我更新了我的答案,试图证明Breeze不向客户端返回sql触发器更新的结果。不知道这是否是一个bug。我对re query的评论是w/r/t Web API数据源,而不是OData数据源(我对它知之甚少)。我们将尝试复制您所描述的内容并向您报告。