我的应用程序中有一个员工类。该类的构造函数采用员工 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/