有关将从数据存储获取的数据传递到业务层的建议



我正在尝试在.NET中开发一个数据访问层,具体来说,C#,不使用实体框架,只是 ADO.NET。在这种情况下,数据来自数据库。

我想使数据处理逻辑远离数据存储查询逻辑。我正在尝试这样做,以通过一种方法完成所有查询,该方法采用SQLCommand,并管理与数据库相关的一次性对象。 我希望此方法返回从查询中获得的数据,我可以返回 Reader 对象,但这意味着我必须关闭并处理读取器及其在调用者方法上的连接,这正是我试图避免的。我想出的另一种选择是将每一行存储在字典中,其中列名是键,并将字典列表返回给调用者,这将允许我关闭连接,但我不确定这是否是实现这一目标的好方法。我想知道是否有更好(适当?)的方法

您目前拥有的两种方法并不漂亮。 将数据库读取器返回到业务层的第一种方法是将数据层耦合到业务层。 例如,想想有一天你决定使用 nosql 数据库,对于紧密耦合的架构来说,这项任务会很困难。

第二种办法很难管理。

一种方法是在数据层上创建存储库。例如,如果你有一个雇员表,你可以有一个雇员存储库类,其中包含诸如getEmployerById(int id)等方法。 此存储库将返回强类型员工(类)。

在业务层中使用员工存储库很容易,如果有一天您希望将数据层切换到nosql之类的东西,那么业务层中的代码不会关心getEmployerById方法下的变化,只要它仍然有效。

最新更新