PDF.NET不使用DalFactory和IDAL支持多种数据库应用方案
来源:互联网 发布:如何在淘宝上卖话费 编辑:程序博客网 时间:2024/06/01 10:50
MS的PetShop示例应用程序的“多层架构”被很多.NET开发人员奉为经典的架构,我以前做的项目团队的Leader也是照搬它的,甚至来到现在这个公司后,好几个新来的同事建解决方案也是照搬PetShop的架构,可见PetShop对大家影响之深。
下面是PetShop 3.0的架构图:
为了支持多数据库应用,在DAL中,定义了DAL Interface和DAL Factory,下面这个图也许跟简单直观一些
通过这个图大家都能够明白,引入DalFactory和IDAL就是为了系统支持不同的数据库。
PDF.NET数据开发框架采用了完全不同的方式,先看看它的分层架构图:
如果在DAL中没有某种数据库特有的SQL语句,DalFactory是不需要的,当然IDAL也不需要了。例如ORM操作,一般不会用到数据库的特性,发出的都是标准的SQL语句。PDF.NET数据开发框架的ORM操作是通过EntityQuery和OQL表达式来实现,在具体支持不同数据库的时候,底层采用的是反射工厂模式:
/// 创建公共数据访问类的实例
/// </summary>
/// <param name="providerAssembly">提供这程序集名称</param>
/// <param name="providerType">提供者类型</param>
/// <returns></returns>
public static AdoHelper CreateInstance( string providerAssembly, string providerType )
{
Assembly assembly = Assembly.Load( providerAssembly );
object provider = assembly.CreateInstance( providerType );
if( provider is AdoHelper )
{
return provider as AdoHelper;
}
else
{
throw new InvalidOperationException("当前指定的的提供程序不是 AdoHelper 抽象类的具体实现类,请确保应用程序进行了正确的配置(如connectionStrings 配置节的 providerName 属性)。");
}
}
这样只需要在配置文件中进行配置,指明采用何种数据库即可,这是框架脱离DalFactory+IDAL的第一种方式。
当然,为了高效的使用某种数据库的特性,有可能会写一些数据库特性的SQL,要使得系统支持不同的数据库,还得使用DalFactory,因此得定义IDAL。
PDF.NET数据开发框架为了解决这个问题,将所有的SQL语句写在一个配置文件SqlMap.config中,使用工具自动生成框架的DAL代码,即SqlMapDAL,不同的数据库系统使用不同的SqlMap.config文件即可,不需要替换SqlMapDAL,因此,框架再也不需要定义DalFactory和IDAL了,这应该算是第二种方式。
下图是根据SqlMap自动生成代码并运行的流程:
在SqlMap中,可以将结果映射成DataSet,实体类和实体类集合,也可以是单值类型,可以完成各种复杂的SQL操作,可以处理存储过程。系统将SQL语句中的参数映射成DAL代码中方法的参数,使得操作非常直观高效,并且没有SQL注入的问题。
PDF.NET数据开发框架通过自己的ORM(EntityQuery+OQL)结合SQL-MAP的方式,使得喜欢OO的人和喜欢SQL的人都能找到自己需要的,便利性和灵活性都能够兼得。
- PDF.NET不使用DalFactory和IDAL支持多种数据库应用方案
- 不使用DalFactory和IDAL,支持多种数据库应用
- BLL、DAL、IDAL、MODEL、DBUtility、DALFactory层级 (
- .NET通用的数据库操作类(支持多种数据库)
- ADO.NET数据库应用开发 pdf电子书
- Android 开发之多种方案PDF阅读
- DALFactory 和SQLServerDAL
- 支持多种格式转换的PDF转换器
- 仅改2处配置, 令mybatis兼容多种数据库(非专业方案, 源自官方支持)
- Asp.net 不使用SQLDMO实现数据库备份和还原
- Asp.net 不使用SQLDMO实现数据库备份和还原
- Asp.net 不使用SQLDMO实现数据库备份和还原
- DALFactory
- DALFactory
- 一个方便的.net数据库操作类(很容易扩展,以支持多种数据库)
- C#中的三层架构+工厂模式BLL、DAL、IDAL、MODEL、DBUtility、DALFactory层级
- 在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持
- 支持多种格式转换的PDF转换成PPT转换器
- onNewIntent调用时机 !!!!
- c++ java 基础积累
- 解决问题的一些经验
- ofstrem/ifstrem/二进制文件/文本文件 用法
- 批处理修改电源管理方案
- PDF.NET不使用DalFactory和IDAL支持多种数据库应用方案
- 弹出div浮动登陆框 背景变灰
- UCGUI中的实现透明窗体的原理
- Java 的传值小例子
- 黑马程序员--学习--交通灯系统(摘)
- paypal支付代码-PHP
- 在Android上开发带数字签名的APK安装文件
- 微软为Xbox和WP手机设计了两款头戴式3D显示器
- android开发环境搭建-转载1