2016年11月28日

SqlHelper简单实现(通过Expression和反射)9.Sql表述对象SqlSession

摘要: 此类是整个SqlHelper的另一个核心,基本思想就是通过EntityHelper,ObjectHelper和ExpressionHelper获取拼接Select语句的全部元素,拼接出完整Select语句。 阅读全文

posted @ 2016-11-28 14:39 Kakura 阅读(762) 评论(0) 推荐(0) 编辑

SqlHelper简单实现(通过Expression和反射)4.对象反射Helper类

摘要: ObjectHelper的主要功能有: 1.通过反射获取Entity的实例的字段值和表名,跳过自增键并填入Dictionary<string,string>中。 2.通过反射,为实例赋值,此处只是列举了常用的数据类型:int,string和DataTime 阅读全文

posted @ 2016-11-28 14:38 Kakura 阅读(456) 评论(0) 推荐(0) 编辑

SqlHelper简单实现(通过Expression和反射)3.实体,数据传输对象(DTO)Helper类设计

摘要: EntityHelper的主要功能有: 1.通过反射获取DTO的字段,主要提供给在需要从Entity获取数据后,填充给DTO并返回的作用: 通过反射获取PropertyInfo[]对象,然后取出Name属性,填入新表。 2.获取实体中的字段,主要提供在Select,Update,Insert,Joi 阅读全文

posted @ 2016-11-28 14:38 Kakura 阅读(868) 评论(0) 推荐(0) 编辑

SqlHelper简单实现(通过Expression和反射)5.Lambda表达式解析类

摘要: 这个ExpressionHelper类,是整个SqlHelper中,最核心的一个类,主要功能就是将Lambda表达式转换为Sql语句。同时这个转换过程比较复杂,所以下面详细讲解一下思路和这个类的作用。 0x01基本 在Sql语句中,主要由表名,字段,条件语句等元素组成,而这些元素中,表名,字段可以由 阅读全文

posted @ 2016-11-28 14:38 Kakura 阅读(3656) 评论(1) 推荐(0) 编辑

SqlHelper简单实现(通过Expression和反射)6.Providor模式(工厂+策略)可配置数据库选择

摘要: 基本思想,将MsSqlDbUtility和MySqlDbUtility设计成单例模式,通过App.config或Web.config进行默认的数据库设置,然后通过DbUtilityFactory获取DbUtility。 1.接口: 2.工厂类: 阅读全文

posted @ 2016-11-28 14:38 Kakura 阅读(422) 评论(0) 推荐(0) 编辑

SqlHelper简单实现(通过Expression和反射)7.MySql数据处理类

摘要: MySql的数据处理类和Sql Server没有太大差别,从思路上来说没有区别,所以此处只是给出代码,不再多加解释了。 阅读全文

posted @ 2016-11-28 14:38 Kakura 阅读(354) 评论(1) 推荐(0) 编辑

SqlHelper简单实现(通过Expression和反射)8.Sql Server数据处理类

摘要: 这个类基本上就是调用EntityHelper,ExpressionHelper和ObjectHelper来进行各种完整SQL的拼接操作。 阅读全文

posted @ 2016-11-28 14:38 Kakura 阅读(356) 评论(0) 推荐(0) 编辑

SqlHelper简单实现(通过Expression和反射)1.引言

摘要: 之前老大说要改变代码中充斥着各种Select的Sql语句字符串的情况,让我尝试着做一个简单的SqlHelper,要具有以下功能: 1.不要在业务代码中暴露DataTable或者DataSet类型; 2.可以完成Select操作,需要支持条件查询,分页,单条记录查询,排序,连表,单个值; 3.可以完成 阅读全文

posted @ 2016-11-28 14:37 Kakura 阅读(1232) 评论(4) 推荐(3) 编辑

SqlHelper简单实现(通过Expression和反射)2.特性和实体设计

摘要: 对于需求中的不要暴露DataTable或DataSet,我想到了设计中常用的对象:实体(Entity),通过实体将数据库中的字段封装成类,这样做不仅使代码更有可读性,维护起来也很方便。同时我自定义了一些C#特性来表述字段在数据库中的特性。 1.递增键: 2.主键: 3.表名: 测试用例: 阅读全文

posted @ 2016-11-28 14:37 Kakura 阅读(604) 评论(0) 推荐(0) 编辑

C#中跨库事务处理解决方案

摘要: 最近新接手了一项业务,其中有一个方法,需要对业务表进行写入数据,之后记录到日志表中。这部分代码原先是前人写的,他没有采用任何方案,只是简单的调用Ado.net执行了两次写库操作。因此经常出现系统使用者不断发邮件说数据有问题,经过查看原因就是在于写库操作中,有某个表写入失败,但是其他表写入成功,导致出 阅读全文

posted @ 2016-11-28 11:18 Kakura 阅读(2914) 评论(4) 推荐(0) 编辑

导航