应该在数据访问层中隐藏哪些细节?

时间:2012-02-29 22:39:53

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

我正在创建一个数据访问层(DAL)来读取/修改存储在XML文件中的一些表。在我的应用程序运行时,这些表的行经常更新,因此我考虑了两种可能的替代方法:

  1. 当应用程序启动时,我可以通过DAL加载表中的所有数据,并将它们放在数据结构中,例如Dictionary。应用程序运行时,此字典会不断更新。当应用程序关闭时,我调用DAL的方法,以便用字典中的新数据覆盖旧文件。
  2. 将此字典隐藏到上层可能更为正确,因此我可能在DAL中有一个Dictionary私有字段。通过这种方式,上层将调用DAL的方法来更新表的行。
  3. 也许第二种方法比第一种更好?

1 个答案:

答案 0 :(得分:1)

这里的选项2更适合封装,但会增加复杂性。字典是一个实现细节,您的上层不应该关注。相反,您的数据访问层应该公开表示实际表的类 - 例如,您可能有Person类或Inventory类。作为DAL类,这些将提供适当的添加,删除,更新,检索等方法。

更进一步,你有一个域层,它对从DAL类中检索到的行进行操作,这些行将添加业务方法(例如,Order可以由Person生成并影响{{1 - 在这些域类上调用方法的行为归结为DAL以实际触及基础数据。)