0

我有一个 n 层应用程序,其中包括一个数据访问层 (DAL) 和一个业务逻辑层 (BLL)。我在 DAL 中使用 SQL 查询和存储过程来填充我的对象。

所以这是我的问题:

我的 SQL 查询中的子句是否ORDER BY违反了关注点分离?

一方面,排序逻辑似乎属于业务层,因为是我们的业务规则决定了我们为什么要以特定顺序显示数据。此外,我们可能希望以不止一种方式显示相同的数据。此外,我的数据访问代码不应该不知道诸如如何显示之类的问题吗?

另一方面,数据库在排序数据方面通常比应用程序代码更有效,因此出于性能原因,使用 ORDER BY 子句优于 BLL 中的排序。此外,我不确定在 DAL 中指定默认排序顺序是否真的违反了关注点分离。记录必须以某种方式从数据库中出来。为什么不根据最常见的情况对它们进行排序呢?如果我们需要不同于默认的排序顺序,那么我们可以通过 BLL 中的某种方法进行排序。

4

1 回答 1

0

如果您有一个“默认”排序设置,我觉得没关系,该设置在没有为过程提供排序设置的情况下应用。

这将使代码具有可重用性和灵活性……例如,如果您希望允许用户自己定义排序设置怎么办?

我不认为这是违规行为,因为许多表都有明显的默认排序逻辑,否则需要一次又一次地重新应用。你说得对,在数据库级别应用排序更有效。

于 2014-06-09T16:43:22.230 回答