我仍然在应该在数据层和业务层编码的内容中感到困惑。因为有些方法可以在两个主题中实现。例如,我希望在两个日期或类似事件之间使用Employs。我应该在BL或AL中这样做。
namespace DataLayer
{
public class EmployeRepository : IEmployeRepository
{
public List<Employe> GetList()
{
using (ADON3Entities db = new ADON3Entities())
{
return db.Employes.ToList();
}
}
public List<Employe> GetEmploysBetweenDates(DateTime start, DateTime end)
{
using (ADON3Entities db = new ADON3Entities())
{
return db.Employes.Where(em => em.NaissEmploye >= start && em.NaissEmploye <= end).ToList();
}
}
}
}
或者我应该这样做:
namespace BusinessLayer
{
public static class EmployeServices
{
static IEmployeRepository repository;
static EmployeServices()
{
repository = new EmployeRepository();
}
public static List<Employe> GetList()
{
return repository.GetList();
}
public static List<Employe> GetEmploysBetweenDates(DateTime start, DateTime end)
{
return repository.GetList().Where(em => em.NaissEmploye >= start && em.NaissEmploye <= end).ToList();
}
}
}
感谢先进的任何帮助或参考,以了解树层架构!
答案 0 :(得分:4)
在许多情况下,特别是对于大型数据集;您希望这种方法在数据层中。我还会争辩说它应该在那里;在两个日期之间查询不是业务逻辑。
您希望它在数据层中的原因是,通过将其放在那里,您可以获得尽可能接近实际数据库查询的逻辑(理想情况下在查询本身中);从而允许数据库引擎做过滤器(它们非常擅长),而不是将一堆你实际上并不需要的数据(可能是通过网络!)返回给程序并让它进行过滤。
答案 1 :(得分:0)
经验法则是,如果它只是一个查询而且它所做的只是与数据库交谈,它属于数据层(这是你的情况)。但是,如果有关于您要检索的员工的业务规则,则应该进入业务层。有关详细信息,请阅读this。