我有一个n层应用程序,其中包括数据访问层(DAL)和业务逻辑层(BLL)。我在DAL中使用SQL查询和存储过程,我用它来填充我的对象。
所以这是我的问题:
我的SQL查询中的ORDER BY
子句是否违反了关注点分离?
一方面,排序逻辑似乎属于业务层,因为我们的业务规则决定了我们希望以特定顺序显示数据的原因。此外,我们可能希望以多种方式显示相同的数据。此外,我的数据访问代码不应该不知道它的显示方式等问题吗?
另一方面,数据库在排序数据时通常比应用程序代码更有效,因此出于性能原因,有一种激励措施是使用ORDER BY子句而不是BLL中的排序。另外,我不确定在DAL中指定默认排序顺序是否真的违反了关注点的分离。记录必须以某种方式从数据库中出来。为什么不根据最常见的情况对它们进行排序?如果我们需要一个不同于默认排序顺序的排序顺序,那么我们可以通过BLL中的某些方法进行排序。
答案 0 :(得分:0)
我觉得如果你有一个默认的'排序设置,在没有提供给过程的排序设置时应用。
这将使代码可以重复使用并且灵活前进......例如,如果您希望允许用户自己定义排序设置,该怎么办?
我不认为这是违规行为,因为很多表都有明显的默认排序逻辑,否则需要一次又一次地重新应用。并且你说在数据库级别应用排序更有效。