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

时间:2018-01-27 00:55:08

标签: c# .net data-access-layer

我试图在.NET中开发数据访问层,C#是特定的,不使用实体框架,只需ADO.NET。在这种情况下,数据来自数据库。

我希望保持数据处理逻辑远离数据存储查询逻辑。我尝试通过单个方法执行此操作,该方法采用SQLCommand,并管理与数据库相关的一次性对象。 我希望这种方法能够返回从查询中获取的数据,我可以返回Reader对象,但这意味着我必须关闭并处理读取器及其与调用方法的连接,这正是我想要避免的。我提出的另一个选择是将每一行存储在字典中,其中列名是键,并将字典列表返回给调用者,这样我就可以关闭连接了,但是我&#39 ;我不确定这是否是实现这一目标的好方法。我想知道是否有更好的(适当的?)方式。

1 个答案:

答案 0 :(得分:1)

你目前的两种方法并不漂亮。将数据库读取器返回到业务层的第一种方法是将数据层与业务层耦合。举个例子,想想你决定使用nosql数据库的那一天,使用紧耦合架构这个任务会很困难。

第二种方法难以管理。

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

在您的业务层中使用员工仓库很容易,如果您希望将数据层切换到类似nosql的那一天,那么业务层中的代码就不会关心getEmployerById方法下的更改,只要它仍然存在功能