HTML5技术

升讯威ADO.NET增强组件(源码):送给喜欢原生ADO.NET的你 - sheng.chao(3)

字号+ 作者:H5之家 来源:H5之家 2016-12-20 11:01 我要评论( )

public ListT SelectT(Dictionary string , object attachedWhere) where T : class , new () 通过attachedWhere 额外的指定查询条件。Dictionarystring,object 中的string 和 object 分别指定字段和字段值。 为什

public List<T> Select<T>(Dictionary<string,object> attachedWhere) where T : class,new()

通过 attachedWhere 额外的指定查询条件。Dictionary<string,object> 中的 string 和 object 分别指定字段和字段值。

为什么不使用 lamda?在一些场景中不够灵活。

 

c)通过 SQL 语句进行查询

既然是ADO.NET增强组件,直接使用SQL来操作当然是重头戏。

public List<T> Select<T>(string sql) where T : class

直接编写 SQL 语句进行数据查询,Select 方法可根据返回的结果集和指定的对象类型进行自动映射,返回强类型对象集合

可以传递任意能够返回结果集的SQL语句,返回的结果集自动与泛型T匹配,泛型T也不一定就是数据库中的表所映射的对象。

 

d) 参数化 SQL 语句查询

public List<T> Select<T>(string sql, List<CommandParameter> parameterList) where T : class

进行参数化的 SQL 语句查询,例如:

List<CommandParameter> parameterList = new List<CommandParameter>(); parameterList.Add(, )); List<User> userList = _dataBase.Select<User>();

 

2.与内存中的 DataSet 进行动态映射

当我们使用存储过程或其它方式得到一个 DataSet 时,升讯威ADO.NET增强组件支持对其进行动态映射,根据 DataSet 数据集得到强类型的对象实例或对象实例的集合。

RelationalMappingUnity 类提供了以下方法:

public static List<T> Select<T>(DataSet ds) where T : class

将 DataSet 视为一个完整数据源,从中查找指定对象类型所映射的表名进行实例化。

 

public static List<T> Select<T>(DataTable dt) where T : class

使用 DataTable 作为唯一数据集,对指定的对象类型进行实例化。

 

Select(DataRow dr, Type type) Select(DataRow dr, Type type, Dictionary<string, string> fieldPair)

上面三个方法提供了更细粒度的操作可能,直接从 DataRow 得到一个强类型的对象实例

 

3.数据填充

很多时候我们需要根据某个已知条件查询得到对象实例,如我们得到 User 的 Id,希望查询数据库表得到 User 对象,在升讯威ADO.NET增强组件中,我们使用 Fill 方法既可。

public bool Fill<T>(object obj) where T : class,new()

public User GetUser(Guid id) { User user = new User(); user.Id = id; if (_dataBase.Fill<User>(user)) return user; ; }

Fill 方法返回一个 bool 值,表示是否成功查询并填充了数据。

Fill 方法也有一个高阶重载,可以额外指定查询条件:

public bool Fill<T>(object obj, Dictionary<string, object> attachedWhere) where T : class,new()

 

4.SQL 语句构造器

有时,我们希望直接通过 SQL 语句实现对数据库表的简单操作,升讯威ADO.NET增强组件提供了一个 SQL 语句构造器,帮助生成 SQL 语句,可以减轻开发人员编写 SQL 语句的工作量和出错的可能性,提高软件工程的质量。

public void AddUser(User user) { SqlStructureBuild sqlStructureBuild = new SqlStructureBuild(); sqlStructureBuild.Type = SqlExpressionType.Insert; sqlStructureBuild.Table = ; sqlStructureBuild.AddParameter(, user.Id); sqlStructureBuild.AddParameter(, user.Name); sqlStructureBuild.AddParameter(, user.Age); SqlExpression sqlExpression = sqlStructureBuild.GetSqlExpression(); _dataBase.ExcuteSqlExpression(sqlExpression); }

ExcuteSqlExpression 方法在执行 SQL 构造器生成的 SqlExpression 对象时,使用的是参数化,强类型的方法进行的。

 

5.事务

对于连续的数据库操作,升讯威ADO.NET增强组件自动封装为一个事务进行执行,如果执行失败,将自动回滚。

a) 连续写入操作

非常简单,直接使用 Insert 方法插入一个对象集合既可,方法原型如下:

public void InsertList(List<object> objList)

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 升讯威微信营销系统开发实践:(3)中控服务器的设计 .Net 还是 Java? - sheng.chao

    升讯威微信营销系统开发实践:(3)中控服务器的设计 .Net 还是 Java

    2016-08-26 16:00

  • html5增强的页面元素 - Honker书生

    html5增强的页面元素 - Honker书生

    2016-06-16 11:00

  • 5个CSS3技术实现设计增强 - jerrylsxu

    5个CSS3技术实现设计增强 - jerrylsxu

    2016-05-09 14:00

  • 使用ARIA角色增强可访问性 - 易天曦小盆友

    使用ARIA角色增强可访问性 - 易天曦小盆友

    2015-11-20 11:34

网友点评
d