![]() |
1
1
这看起来像是 Enterprise Library Validation Application Block (VAB)。VAB设计用于返回所有错误。除此之外,它不会引发异常,因此您可以简单地要求它为您验证类型。 当您决定使用VAB时,我建议您-不要-使用linq to sql的onxxxchanging和onvalidate方法。最好重写DataContext类上的SubmitChange(ConflictMode)方法以调用VAB的验证API。这将使验证逻辑远离业务实体,从而保持实体的干净。 请看以下示例:
调用validate()方法将返回所有错误的集合,但当您准备好持久化时,我只调用SubmitChanges(),而不调用validate()。submitChanges()现在将检查错误,并在其中一个实体无效时引发异常。因为错误列表被发送到validationException,所以您可以在调用堆栈上方的错误上迭代,并将它们呈现给用户,如下所示:
使用此方法时,请确保在将实体保存到数据库之前始终对其进行验证。 Here 这是一篇很好的文章,解释了如何将VAB与LINQ集成到SQL中。如果您想使用VAB和LINQ to SQL,就一定要阅读它。 |
![]() |
2
0
不是LINQ。假设您将验证输入 之前 把它交给林肯。 你所看到的是自然行为,除了例外。 |
![]() |
3
0
我知道了。我将错误消息存储在带有静态变量的类中,而不是在验证失败时引发异常。为此,我对DataContext类进行如下扩展:
在每个表对应的类中,我将继承新定义的类,如下所示:
只有在onvalidate函数中,如果错误数不是0,我才会抛出异常。因此,在不丢失用户输入的数据的情况下,不会尝试插入并保持用户在同一输入页上。 |
![]() |
Rm558 · 是否可以更改XML类型上的LINQPad代码生成? 6 年前 |
![]() |
MJK · 规范模式-使用ICollection实现表达式 6 年前 |
![]() |
Roland Ebner · 为实体框架多对多关系构建表达式树? 7 年前 |