我很久以前就开始了一个项目,并在我的解决方案中创建了一个数据访问层项目,但从未开发过任何内容.数据访问层的目的是什么?有没有什么好的资料可以让我了解更多有关数据访问层的信息?
用两个词来说:松耦合
保持用于从数据存储(数据库,平面文件,Web服务等)中提取数据的代码,与业务逻辑和表示代码分开.这样,如果您必须更改数据存储,则最终不会重写整个数据存储.
目前,各种ORM框架都将DAL与其他层混合在一起.这通常使开发更容易,但更改数据存储可能会很痛苦.公平地说,改变这样的数据存储是非常罕见的.
数据访问层有两个主要目的
抽象实际的数据库引擎或其他数据存储,以便您的应用程序可以从使用Oracle转换为使用MS SQL服务器
摘要逻辑数据模型,使您的业务层与此知识分离,并且不可知.使您能够在不影响业务层的情况下修改逻辑数据模型
这里的大多数答案提供了第一个原因.在我看来,第二个更为重要.基本上,您的业务层不应该知道正在使用的逻辑数据模型.今天,ORM和Linq#2似乎走出了窗外,人们往往会忘记(或者无法看到关于#2的细线).
基本上,为了更好地理解数据层的目的和功能,您需要从业务层的角度看待事物,请记住,业务层应该与数据存储的逻辑数据模型无关.
因此,每次业务层需要数据时,如果应该以非常简单的逻辑数据模型不可知的方式询问它所需的数据.因此它会调用数据访问层,例如:
GetOrdersForCustomer(42)
它可以准确地获取所需的数据,而无需知道哪些表存储了此信息或存在关系等.
我在我的博客上写了一篇文章,详细介绍了这篇文章.
数据访问层的目的和功能
数据访问层如下由此所有与数据层(数据库)进行交互所需的业务逻辑的逻辑被隔离到单个集类(层)的"关注点分离"的想法.这使您可以更容易地改变后端物理数据存储技术(从XML文件移动到数据库,或从SQL Server到Oracle或MySQL等),而无需有很大的影响(如果使用得当具有零影响)到您的商业逻辑.
有很多工具可以帮助您构建数据层.如果您搜索短语"object relational mapper"或"ORM",您应该找到更详细的信息.