|
1
1
我可以理解,您不希望在属性设置为无效值后直接引发异常。这种方法使得很难正确地与用户沟通到底出了什么问题。但是,我认为最好不要使用那些部分验证方法。IMO您希望在模型无效时抛出一个异常,但仅在将模型持久化到数据库之前抛出。 我建议您使用一个验证框架,并将它与您的Linq to SQL DataContext类集成。下面是一个如何使用 Enterprise Library Validation Application Block 但是这个概念适用于您选择的每个验证框架:
有几种可用的验证框架,如数据注释和 这个 企业库验证应用程序块 (VAB)。VAB非常适合这样做。使用Linq to SQL,您的实体将被生成,因此您需要使用VAB提供的基于配置的方法(不要尝试用属性来装饰您的实体)。通过重写SubmitChanges方法,可以确保在实体被持久化之前触发验证。我的答案 here 和 here 包含有关使用VAB的有用信息。 我写了一些关于将vab与linq集成到SQL的有趣文章 here 和 here . LinqtoSQL(与EntityFramework1.0相比)的好处在于生成了大量有用的元数据。当将其与VAB结合使用时,您可以使用此元数据来验证模型,而无需手动连接每个验证。尤其是,可以从模型中提取最大字符串长度(而非空)的验证。读 here 如何做到这一点。 救出吸血鬼! |
|
2
1
最终这表明在你 最后一道防线 (至少在任何数据库约束之前)您的数据无效。如果你想做一些除了大声尖叫以外的事情,那么也许可以验证数据(通过多种方法中的任何一种) 之前 将其添加到插入列表中。
作为一个额外的想法,你
能够
尝试推翻
举例来说,这只做一个插入(不是按要求两个),但我不喜欢这种方法。完全。只要我们清楚;-p
|
|
|
Dónal · Spring Boot应用程序中的伪造证明文件类型验证 1 年前 |
|
|
David · 何时实际应用字符编码? 1 年前 |
|
|
Qiuzman · 如何确保v-combobox中的所有项目都遵循规则 2 年前 |
|
DevilsThumb · 赋值时的Pydantic类型转换 2 年前 |