我仍然在数据层和业务层中应编码的内容混淆。因为可以在两个主题中实现某些方法。例如,我希望使用两个日期或这样的东西之间的使用。所以我应该在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();
}
}
}
并感谢Advanced的任何帮助或参考,以了解树层体系结构!
在许多情况下,尤其是大数据集;您希望这种方法在数据层中。我还要认为它应该在那里。在两个日期之间查询不是业务逻辑。
您希望它在数据层中的原因是,通过将其放置在此处,您可以将逻辑尽可能靠近实际的DB查询(理想情况下在查询本身中(;因此,允许数据库引擎执行过滤器(它们非常擅长(,而不是返回一堆您实际上不需要的数据(可能跨网络!(并让其执行过滤器。
经验法则是,如果它只是一个查询,而它所做的只是与数据库交谈,则它属于数据层中(这是您的情况(。但是,如果有关于您要找回的员工的业务规则,那应该进入业务层。请阅读此信息以获取更多详细信息。