Breeze 如何在保存更改集数据之前检查服务器上的更改集数据?

Breeze 如何在保存更改集数据之前检查服务器上的更改集数据?,breeze,Breeze,一位朋友问:“您是否有关于如何在将数据提交到数据库之前检查服务器上的Breeze更改集数据并执行服务器端验证和安全检查的示例或文档?”我的回答如下。请参阅文档中的“”主题,该主题描述了用于此目的的Breeze.NET功能 虽然本主题特别针对EFContextProvider,但大多数要点适用于基类ContextProvider,这在保存到任何类型的数据存储时都很有用(请参见示例) 由BreezeMvcSpa模板制作的应用程序提供了保存验证的体验(广义上理解为包括安全检查) BreezeMvcSp

一位朋友问:“您是否有关于如何在将数据提交到数据库之前检查服务器上的Breeze更改集数据并执行服务器端验证和安全检查的示例或文档?”我的回答如下。

请参阅文档中的“”主题,该主题描述了用于此目的的Breeze.NET功能

虽然本主题特别针对
EFContextProvider
,但大多数要点适用于基类
ContextProvider
,这在保存到任何类型的数据存储时都很有用(请参见示例)

由BreezeMvcSpa模板制作的应用程序提供了保存验证的体验(广义上理解为包括安全检查)

BreezeMvcSpa模板将于2013年2月与“ASP.NET和Web工具2012.2”一起发布

查看从
EFContextProvider
继承的模型/TodoRepository.cs。它在保存实体(entityInfo)之前覆盖
,以确认您始终在更新/删除属于当前用户的
TodoList
/
TodoItem
。它还将当前用户分配给一个新的
TodoList
。在一个真实的应用程序中,这将是一些助手类的分派器,这些助手类专用于验证特定的实体类型,这一点我将在下面稍微详述

还有两个重要的替代:

BeforeSaveEntities(saveMap)
让您有机会一次检查整个更改集。这是将整个更改集作为一个整体进行验证的一种很好的方法,也许是为了确保此保存请求作为单个事务是有意义的。它也是进行跨实体检查的好地方<分别为每个实体调用
BeforeSaveEntity(entityInfo)
后,将调用code>BeforeSaveEntity(saveMap)

BeforeSaveEntities(saveMap)
可能是一个很好的分派点,用于将验证委派给专用的助手类。我怀疑我是否会将所有验证逻辑放在一个大的
ContextProvider
类中。我不介意所有保存活动都通过
ContextProvider.SaveChanges
gate进行,但我不想在
ContextProvider
本身中完成所有工作

SaveChangesCore
是另一个重要的覆盖。在这里,您可以进行任何最后的预保存准备,并将更改集交给实际执行数据库保存的对象(例如,
DbContext.SaveChanges
方法)。在将控件返回到
ContextProvider
之前,可以截取保存操作的结果

还请注意,当使用
DbContext
时,EF应用您在模型属性中规定的验证,包括标准集和自定义验证属性

我有更多的储蓄建议,但这可能足以消化现在