在 ViewModel 或数据库中验证?

Validation in ViewModel or in Database?

我有一个 MVVM 应用程序,我要从 XML 切换到 SQL 服务器数据库(使用 EF)。 到目前为止,所有验证逻辑都是在 ViewModel 中使用 IDataErrorInfo 和 ErrorTemplates 完成的。

现在我有一个带有约束和所有其他约束的数据库,我想知道哪个是放置验证逻辑的最佳位置:本能地我会让数据库验证数据并最终从存储库,但我从未见过有人这样做。

我的另一个问题是:如果我在虚拟机和数据库级别都进行了验证,我该如何防止约束错位?

提前谢谢大家!

与大多数事情一样,这取决于偏好,但我认为大多数人会同意最安全的选择是验证客户端和服务器端。客户端提供了良好的用户体验。服务器端增加了额外的安全性。当然,并非所有桌面应用程序都会调用服务,但原则仍然成立。为您的用户添加验证,但在保存之前在代码中重新验证。有很多方法可以做到这一点,具体实施取决于您,但这是有趣的部分。