【问题标题】:Breeze Server Side Validation with a database query带有数据库查询的微风服务器端验证
【发布时间】:2018-01-30 23:59:13
【问题描述】:

什么是最好的模式,使用微风,在服务器端验证保存,它必须查询数据库,并让它“冒泡”到客户端?

服务器端验证必须查询数据库以确定保存是否有效,即:

C#伪代码:

int count = _contextProvider.Context.MyObject.Where(x => x.Something == 1).Count();
if(count != 0) {
  throw new Exception("Cannot delete My Object, records exist");
}

理想情况下,我希望能够在 JavaScript 客户端上执行类似的操作 -

entity.entityAspect.validateEntity();

并让它触发服务器端验证(但我愿意接受所有建议!)

我还需要这个来防止由于实体处于无效状态而发生 SaveChanges(即使没有手动调用 validateEntity)。

【问题讨论】:

    标签: javascript c# validation breeze


    【解决方案1】:

    如果您可以只执行server-side validation,您可以覆盖BeforeSaveEntities 方法并在那里进行验证。您将创建 EntityError 对象并抛出 EntityErrorsException 导致保存被拒绝。

    如果您想在客户端上进行验证,您需要将add a custom validator 发送到您的应用程序,并在 Breeze 中注册。然后,当您尝试 SaveChanges 时,Breeze 会自动调用您的验证器。

    问题在于您的验证器需要执行异步 AJAX 调用,而 Breeze 不直接支持异步验证器。有关如何实现此功能的提示,请参阅 this answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      相关资源
      最近更新 更多