我习惯经典Asp,我从未使用过DAL / BLL概念,现在我正在学习MVC并试图远离BAD习惯(比如在ASP页面本身编写SQL查询)。我读到了数据访问层和业务逻辑层......它们很有意义,但我想弄清楚如何将它们放入我当前的应用程序中。
它是购物车应用程序。
目前我没有使用EF或SQL实体,简单的旧ADO.NET,我的函数返回DataTable。
让我举个例子。
1 - I need to Return Products From SQL Table
2 - My Products Model Class will hold the SQL Table output
3 - and then I will show the output to View
查询涉及产品
Select * From Products Where title = 'Bluh'
ProductsModelView.vb
Class ProductsModelView
Public title as string
Public sku as string
....etc
End Class
现在我的视图将简单地渲染结果(List(ProductsModelView))
现在我的问题是......我应该如何将上述步骤构建到DAL& BAL层。
答案 0 :(得分:18)
开始的基本方法是创建3个项目:
在您的DAL项目中,您应该创建一个repository
- 类。这个类的作用是对数据库执行查询并将DataTable转换为模型。
你的BLL项目应该有service
级。此类具有对DAL的引用,并调用该方法以获取所需的对象列表(DAL处理DB代码)。在本课程中,您可以应用逻辑。
注意:目前您的应用中似乎没有任何真实的逻辑。没关系,您的服务可以立即从DAL返回列表。它将为您提供一个可以在以后安全地添加逻辑的位置,而不会影响数据访问代码。
在UI中,您的控制器将调用服务并将结果传递给视图,然后视图负责呈现结果。
这是一个基本的起点。你可以更进一步,并完全松散耦合。目前,您仍然存在来自UI =>的硬依赖关系; BLL => DAL。
我最近写了一篇关于如何确保不创建硬依赖项的文章: http://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency-injection/