C# 使用DAAB3.5/4.0进行DAL设计

C# 使用DAAB3.5/4.0进行DAL设计,c#,asp.net,daab,data-layers,C#,Asp.net,Daab,Data Layers,我正在开发一个.NET3.5Web应用程序。它有各种模块,例如客户、订单等。。。。我需要使用EnterpriseLibrary4.0(使用数据访问应用程序块或DAAB)来设计数据访问层(DAL)以连接到SQLServer2005。以下是我的计划: •有一个名为“IDataService”的接口。它将有诸如“ExecuteReader()”、“ExecuteScalar()”、“ExecuteOnQuery()”、“AddParams”等成员。基本上,这个接口看起来几乎像DAAB •有一个名为“D

我正在开发一个.NET3.5Web应用程序。它有各种模块,例如客户、订单等。。。。我需要使用EnterpriseLibrary4.0(使用数据访问应用程序块或DAAB)来设计数据访问层(DAL)以连接到SQLServer2005。以下是我的计划:

•有一个名为“IDataService”的接口。它将有诸如“ExecuteReader()”、“ExecuteScalar()”、“ExecuteOnQuery()”、“AddParams”等成员。基本上,这个接口看起来几乎像DAAB

•有一个名为“DataService”的类来实现该接口。该类将充当DAAB的包装器,每个方法将在内部使用DAAB中的相应方法

•拥有客户、数据等业务类(或数据容器),这些类的属性映射到数据库中相应的表属性

•每个模块都有DAL类,如CustomerDataService、OrdersDataService等。每个类都有构造函数代码,我将在其中实例化DataService类,如下所示:IDataService DataService=new DataService()。此外,这些类中的每个类都有如下方法:GetCustomerDetails()AddCustomer()RemoveCustomer()UpdateOrder等。这些方法将在内部使用“dataService”对象对数据库ExecuteReader、ExecuteOnQuery等执行任何操作

•每个模块都有一个映射器类,如“CustomerMapper”、“OrderMapper”等。这些类将数据源(例如IDataReader)作为输入,并将数据填入通用集合(列表)中。这些映射器类将由相应的Dataservice类在内部调用,以将类型安全集合返回给调用客户端

•有一个类似DbHelper的助手类,它将执行“处理DBNull情况”、“存储过程名称”等任务

•数据服务类将由业务逻辑层类使用…即CustomerBusiness、OrdersBusiness等

•业务逻辑层将集合返回到表示层

这种设计有意义吗?这种方法的优点/缺点是什么?我认为这种方法的优点是,所有DataService类都将针对接口“IDataService”进行编程,而不需要知道“DataService”类是如何在内部实现的。因此,将来,如果我删除DAAB并在DataService类中使用另一个API,则客户端代码不需要更改。 此外,我可以在我的IDataService接口中添加DAAB中不存在的任何方法…例如BatchUpdate()


如果我错了,请纠正我。

看来你把事情弄得太复杂了。也许一步一个脚印会有帮助

达尔: 我看不出在DAAB上使用包装器有什么好处。在我看来,DAAB已经是DAL包装器了。一个接一个的包装会适得其反。应该只有一个DAL。这就是达尔的全部观点

ORM:
对于MappER类,也许您应该考虑使用Orror框架或NHiBeNEnter作为ORM。当模式发生变化时,您自己的ORM代码是乏味的,并且很难维护

如果您使用T4模板来创建自己的映射类,那么维护它们的工作量将大大减少。而且,我认为,你会发现很多其他东西可以使用T4模板来创建。如果包装器DAL添加了功能,那么应该使用它。