| gao_qh |
用户界面层的数据交互问题
三层系统中,层与层之间数据如何交互,也看了不少的书,有一个问题总是不太明白,请高手指教。
这里有一个简单例子,假设有一个处理订单的程序,包含以下数据
订单(Order)表:OrderID,CustomerID,Date
订单明细(OrderDetail)表:OrderID,ProductID,Price,Qty,Amount
客户(Customer)表:CustomerID,CustomerName
产品(Product)表:ProductID,ProductName
最后用户界面需要呈现某一张订单,可能Order这个中间层组件上有GetOrderByOrderID这个方法,该方法返回一个DataSet,该DataSet包含了订单(Order)表:OrderID,CustomerID,Date
订单明细(OrderDetail)表:OrderID,ProductID,Price,Qty,Amount
问题是用户界面还需要呈现CustomerName,以及ProductName等数据才符合实际要求。请问这种情况应该如何处理?我应该使用sql的join直接将CustomerName,ProductName等数据添加到GetOrderByOrderID方法所返回的DataSet中吗?似乎这是传递数据最高效的办法,但是违背了中间层的对象化设计,并且不同的地方可能有不同的要求。如果不采用该方法,如何在UI中结合使用DataAware控件呢?
最后UI层直接访问数据层组件的方法是推荐的做法吗?需要将对数据层组件的访问完全用业务逻辑层组件封装起来吗? |