【发布时间】:2011-02-19 03:19:00
【问题描述】:
我正在为订购系统项目编写自定义 DAL (VB.NET)。我想解释一下它现在是如何编码的,并接受一些替代想法,以使针对 DAL 的编码更容易/更具可读性。 DAL 是 n 层(不是 n 层)应用程序的一部分,其中每一层都在它自己的程序集/DLL 中。
DAL 由几个具有特定行为的类组成。例如,有一个 Order 类负责检索和保存订单。大多数类只有两个方法,一个“Get”和一个“Save”,每个都有多个重载。这些类被标记为 Friend 并且仅对 DAL 可见(在它自己的程序集中)。
在大多数情况下,DAL 返回我称之为“数据对象”的内容。该对象是一个只包含数据和验证的类,位于 BLL 和 DAL 都可以读取的公共程序集中。
为了提供对 DAL 的公共访问,我目前有一个具有许多共享成员的静态(模块)类。简化版如下所示:
Public Class DAL
Private Sub New
End Sub
Public Shared Function GetOrder(OrderID as String) as OrderData
Dim OrderGetter as New OrderClass
Return OrderGetter.GetOrder(OrderID)
End Function
End Class
Friend Class OrderClass
Friend Function GetOrder(OrderID as string) as OrderData
End Function
End Class
BLL 会要求这样的订单:
DAL.GetOrder("123456")
您可以想象,这很快就会变得很麻烦。我主要对构建对 DAL 的访问感兴趣,以便 Intellisense 非常直观。就目前而言,DAL 类中有太多名称相似的方法/函数。
我的一个想法是将 DAL 分解为嵌套类:
Public Class DAL
Private Sub New
End Sub
Public Class Orders
Private Sub New
End Sub
Public Shared Function Get(OrderID as string) as OrderData
End Function
End Class
End Class
所以 BLL 会这样调用:
DAL.Orders.Get("12345")
这稍微清理了一下,但它留下了很多只引用其他类的类,出于某种原因我不喜欢这些类。
在不求助于将 DB 特定指令(如 where 子句)从 BLL 传递到 DAL 的情况下,为 DAL 提供单点访问的最佳或最常见做法是什么?
【问题讨论】:
标签: .net vb.net data-access-layer