asp.net-mvc – asp.net mvc数据库交互验证

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – asp.net mvc数据库交互验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在更新或添加数据库之前,是否有任何关于如何连接需要与数据库交互的验证的链接或建议?我看到的每个示例都显示了如何验证属性,例“是必需的”,“是电子邮件”,“是数字”等,但是如何连接“无法订购缺货商品”的验证? This xVal blog post触及它但没有提供一个例子.

我一直在关注使用存储库的NerdDinner教程,但这是我不太明白的…说我们有一个带有Create方法的OrderController,在创建订单之前我们必须首先检查该项目有货在NerdDinner样式中,Controller使用Repository与数据库进行通信,那么我们的Order对象(Model)如何能够与属性验证一起强制执行此验证,因为它无法与数据库通信?

谢谢你的帮助

解决方法

在NerdDinner教程中,您可以签出IsVaild,然后签出GetRuleViolation方法.根据您的业务和数据库规则,您可以使用这些规则检查插入之前的数据.您甚至可以创建一个IsValidForInsert方法来检查您需要强制执行的任何插入特定规则.

在NerdDinner中,GetRuleViolation允许您检索违反的规则,并根据您的选择将它们冒泡到界面.

  1. public bool IsValid
  2. {
  3. get { return (GetRuleViolations().Count() == 0); }
  4. }
  5.  
  6. public IEnumerable<RuleViolation> GetRuleViolations()
  7. {
  8.  
  9.  
  10. if (CheckDbForViolation)
  11. yield return new RuleViolation("Database Violation","SomeField");
  12.  
  13. if (String.IsNullOrEmpty(Title))
  14. yield return new RuleViolation("Title is required","Title");
  15.  
  16. if (String.IsNullOrEmpty(Description))
  17. yield return new RuleViolation("Description is required","Description");
  18.  
  19. if (String.IsNullOrEmpty(HostedBy))
  20. yield return new RuleViolation("HostedBy is required","HostedBy");
  21.  
  22. ... etc ...
  23.  
  24.  
  25. yield break;
  26. }
  27.  
  28. public bool CheckDbForViolation()
  29.  
  30. {
  31.  
  32. /// Do your database work here...
  33.  
  34. }

您可以进一步将数据库代码拆分到存储库中. CheckDbForViolation将调用repo获取信息,然后确定是否存在违规.事实上,如果您使用的是存储库,我认为这是最好的方法.

猜你在找的asp.Net相关文章