使用干净体系结构进行自定义实体验证



如何实现这样的自定义验证方法,这些方法需要访问使用clean/onion架构构建的应用程序中实体上的数据库?

似乎由于实体位于最内层,因此无法使用最外层的DbContext,但我可能误解了某些内容。

一种选择是从 ValidationContexts GetService(Type serviceType( 方法解析 DbContext,该方法将从 IoC IServiceProvider 获取服务

像这样尝试:

var yourDbContext = (DbContext)validationContext.GetService(typeof(DbContext));

从干净的 arcitecture 的角度来看,您应该将验证的逻辑放在使用 DbContext 或其抽象的验证服务中。然后,您只需将验证服务实现的接口注入到验证属性中。

var yourValidationService = (IValidator)validationContext.GetService(typeof(IValidator));

最新更新