应该在数据层和业务层中实现的内容



我仍然在数据层和业务层中应编码的内容混淆。因为可以在两个主题中实现某些方法。例如,我希望使用两个日期或这样的东西之间的使用。所以我应该在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查询(理想情况下在查询本身中(;因此,允许数据库引擎执行过滤器(它们非常擅长(,而不是返回一堆您实际上不需要的数据(可能跨网络!(并让其执行过滤器。

经验法则是,如果它只是一个查询,而它所做的只是与数据库交谈,则它属于数据层中(这是您的情况(。但是,如果有关于您要找回的员工的业务规则,那应该进入业务层。请阅读此信息以获取更多详细信息。

相关内容

  • 没有找到相关文章

最新更新