我的应用程序中有一个员工类。该类的构造函数采用员工ID。我尝试检查员工ID是否有效的方式是这样的
Employee emp = new Employee("E11234");
if (emp.IsValid())
{
// do whatever is required
}
else
{
// show an error message
}
在构造函数中,我尝试访问数据库,如果我可以检索记录,我填写私有成员的值,否则如果不存在记录,我将isValid属性设置为false。
这是实现我想要的正确方法还是有更好的方法?
答案 0 :(得分:2)
您应该将数据库访问与实体类(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类,然后执行所有必需的验证。
我最好的建议是,您应该尝试让您的实体远离您的基础架构。