我有一个MVVM应用程序,我从XML切换到SQL Server数据库(使用EF)。 到目前为止,所有的validaiton逻辑都是在ViewModel中使用IDataErrorInfo和ErrorTemplates完成的。
现在我有一个带有约束的数据库和其他所有数据库,我想知道哪个是放置验证逻辑的最佳位置:本能地我让数据库验证数据并最终从存储库中捕获验证结果,但我从未见过有人这样做过。
我的另一个问题是:如果我在VM和DB级别都进行了验证,我该如何防止约束错位?
提前谢谢大家!
答案 0 :(得分:1)
与大多数情况一样,这取决于偏好,但我认为大多数人会同意最安全的选择是验证客户端和服务器端。客户端提供了良好的用户体验。服务器端增加了额外的安全性。当然,并非所有桌面应用程序都会调用服务,但原则仍然有效。为您的用户添加验证,但在保存之前在代码中重新验证。有很多方法可以做到这一点,实现取决于你,但这是有趣的部分。