c# - 处理数据验证的正确方法

标签 c# methodology

我的应用程序中有一个员工类。该类的构造函数采用员工 ID。我尝试检查员工 ID 是否有效的方法是这样的

Employee emp = new Employee("E11234");
if (emp.IsValid())
{
    // do whatever is required
}
else
{
    // show an error message
}

在构造函数中,我尝试访问数据库,如果我可以检索记录,我填充私有(private)成员的值,否则如果不存在记录,我将 isValid 属性设置为 false。

这是实现我想要的目标的正确方法还是有更好的方法?

最佳答案

您应该将数据库访问与您的实体类(Employee)分开。分离的一种选择是使用 Repository-pattern用于加载和保存员工。存储库负责访问您的数据库,员工不必担心它来自哪里或您将把它存储在哪里。

有很多关于使用存储库和 here in Stackoverflow we have a good question 的好教程。关于这个话题。使用存储库时,您的代码看起来更像这样:

Employee emp = EmployeeRepository.GetById("E11234");
if (emp.IsValid())
{ 
   do whatever is required 
}
else {     
  // show an error message
}

关于验证,您的员工级别也不应该访问该数据库中的数据库。您可以使用 Validate 方法创建一个 EmployeeValidator 类,然后它会执行所有必需的验证。

我最好的建议是,您应该尽量让您的实体远离您的基础设施。

关于c# - 处理数据验证的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3499425/

相关文章:

javascript - 如果变量未定义,try/catch(其中一种)是防止错误发生的最佳方法吗?

c# - 快速查找最佳子集计数,它们的并集等于基集

c# - 试图让程序等待几秒钟,然后使用 Unity 在 C# 中继续

c# - "Parameter is not valid"从 System.Drawing.Graphics.GetHdc() 抛出——仅在某些机器上

c# - 在新的 VS Studio 2017 ASP.NET MVC 5.2.3 项目中使用 C# 7 功能时出现编译错误

project-management - 冲刺速度计算

c# - 如何解决 `dnx web`异常

java - 在开始编码之前如何确定对象的状态?

java - 在同一个开发团队中使用不同的 IDE

methodology - 业余爱好者应该怎么做才能在掌握基础知识后培养良好的编程技能?