C#.Net快速开发框架 - ORM ,BLL,DAL三者关系


  C#.Net快速开发框架 - ORM ,BLL,DAL三者关系C#.Net快速开发框架 - ORM ,BLL,DAL三者关系


ORM (Object/Relation Mapping) 对象关系映射

BLL (Business Logic Layer) 业务逻辑层

DAL (Data Access Layer) 数据存取层(数据访问层/数据层)



ORM在开发框架中的作用:


CSFramework.ORM主要目的是给SQL命令生成器自动生成SQL命令(DbCommand),用于自动提交数据。将数据表结构映射为C#类,每个字段在类中定义为字符类型常量,在DAL层,以数据表+字段名称组合SQL语句,使用类的常量来规范代码的严谨性。


比如:


C# Code:

       
///
<summary>

        /// 获取所有用户列表

        /// </summary>

        /// <returns></returns>

        public DataTable GetUsers()

        {

            string sql = "SELECT * FROM [" + TUser.TableName + "]"; //引用用户表的表名

            return DataProvider.Instance.GetTable(sql, TUser.TableName);

        }





为什么不使用以下写法?



string
sql = "select * from [tb_MyUser]";
return DataProvider.Instance.GetTable(sql, "tb_MyUser");



这种写法的目的是一致的,若系统中多个单元使用这张数据表时,如果把这些字段或表名“写死”,当某天更改了字段或表名,是不是要搜索整个解决方案然后替换?



关于UI, BLL,DAL逻辑分层


BLL和DAL,这是系统分层后的必然结果,分层有若干好处,特别是易于维护和扩展。CSFramework框架分离了DAL层,若要更换不同类型的数据库,如Oracle,修改DAL层即可。



若不分层,按钮Click事件直接SQL硬编码的话,您想重构吗?



BLL层能有效分离窗体中冗余的代码和业务逻辑,把窗体(UI层)的代码“搬”进BLL。

参考按钮事件写法:


C# Code:

private void OnGetData_ButtonClick(object sender, ButtonPressedEventArgs e)

{

   DataTable data= _MyBLL.GetBusinessByKey("PONO00001");


   
//do something...

}





ORM,BLL,DAL三者关系图


上面介绍了ORM,BLL以及业务逻辑分层在开发框架中起到的作用,ORM,BLL,DAL三者关系图:


贴图图片



ClassGenerator自动生成的ORM代码:


using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using CSFramework.ORM;

namespace CSFramework3.Models
{
   
   /*==========================================
   * 程序说明: tb_PayType的ORM模型
   * 作者姓名: C/S框架网 www.csframework.com
   * 创建日期: 2011-04-05 12:45:33
   * 最后修改: 2011-04-05 12:45:33
   *
   * 注: 本代码由ClassGenerator自动生成
   * 版权所有 C/S框架网 www.csframework.com
   *==========================================*/
   
   ///<summary>
   /// ORM模型, 数据表:tb_PayType,由ClassGenerator自动生成
   /// </summary>
   [ORM_ObjectClassAttribute("tb_PayType", "PayType", true)]
   public sealed class tb_PayType
   {
      public static string __TableName ="tb_PayType";
      
      public static string __KeyName = "PayType";
      
      [ORM_FieldAttribute(SqlDbType.Int,4,false,false,false,false,false)]
      public static string isid = "isid";
      
      [ORM_FieldAttribute(SqlDbType.VarChar,10,false,true,true,false,false)]
      public static string PayType = "PayType";
      
      [ORM_FieldAttribute(SqlDbType.NVarChar,40,false,true,false,false,false)]
      public static string TypeName = "TypeName";
      
   }
}

// 来源:www.CSFramework.com, C/S框架网




C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务


版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
上一篇:浅谈系统框架与开发模式 [转]
下一篇:表单上实现增删改查,除了生成的BLL,DAL和ORM表,还需要处理什么?
评论列表

发表评论

评论内容
昵称:
关联文章

C#.Net快速开发框架 - ORM ,BLL,DAL三者关系
C/S快速开发框架旗舰版V5.1 - 数据字典窗体BLLDAL继承关系
.NET,VS,C#三者关系
CS系统快速开发框架 - 生成BLLDAL
表单上实现增删改查,除了生成的BLL,DALORM表,还需要处理什么?
C/S快速开发框架 - 旗舰版V5.1 - DAL继承关系与IDatabase关系
C#.Net C/S结构开发框架中数据访问层(DAL)的作用
C#.NET快速开发框架
C#.Net C/S结构开发框架BLL层的作用
CSFramework C#代码生成器生成窗体界面UI,BLL,DAL,Model,WCF接口层源代码
基于Winform三层架构+WCF+ORM模型的快速开发框架
ORM模型介绍(ORM Model)- CSFramework.WebApi服务端框架
CS系统快速开发框架 - 生成主从表的ORM
你的框架中是把WCF放在BLLDAL之间?
C/S快速开发框架旗舰版V5.1 - 数据字典窗体继承关系图/数据字典窗体逻辑关系
.NET快速开发平台核心优势 | C/S框架
C#与.NET之间的关系
代码生成器 CodeGenerator - 生成BLL
企业级开发架构.NET快速开发框架-C/S框架
NET开发框架,基于ADO.NET数据持久化快速开发框架平台-C/S框架网原创产品