使用 EF CodeFirst、WebApi 与 DTO 和 Angular(尽管前端选择并不重要):
我将验证放在生成表的类中,例如以下 Required
属性以确保该列不为空:
[Required]
public string Name { get; set; }
在WebApi中,我使用DTO,所以在DTO模型上我有与上面完全相同的,这样当模型绑定(bind)时我可以检查ModelState.IsValid
.
然后我在客户端进行验证,我对此感到满意。
这是“最佳实践”,还是我违反了前两个的 DRY 原则?
编辑
所以看起来它们主要用于 2 个不同的事情:[1] 用于生成表(在 CodeFirst 中),[2] 用于验证来自客户端的输入。
例如,Required
几乎没有任何意义。 DateTime
上的验证属性字段,因为尝试转换 null
时会出错至DateTime
在验证开始之前。
但是,对于字符串,情况有所不同:您需要 Required
NOT NULL
的数据库模型上的属性数据库中的字段,但您还需要 Required
DTO 字符串字段上的属性,否则保存时将通过验证并出错。
最佳答案
我认为您没有违反 DRY,因为尽管您在两个类中使用相同的符号,但该符号在每个类中用于不同的目的。
如果您发现数据模型中使用的 DTO 与 Web API Controller 中使用的 DTO 相同,则可能需要对两者进行合理化。
关于c# - 使用 EF CodeFirst 和 DRY 原则进行重复验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31613386/