HTML5技术

GitHub开源:升讯威ADO.NET增强组件 sheng.ADO.NET.Plus V1.3 - sheng.chao(4)

字号+ 作者:H5之家 来源:H5之家 2017-03-22 13:02 我要评论( )

public User GetUser(Guid id){User user = new User();user.Id = id; if ( _dataBase.FillUser (user) ) return user; ;} Fill 方法返回一个 bool 值,表示是否成功查询并填充了数据。 Fill 方法也有一个高阶重载

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)

连接的写入操作时,并不要求传入的参数是同样类型的,也就是说可以传入多个不同类似的实体对象,如同时传入User和Order,升讯威ADO.NET增强组件也会将其封装为事务执行,要么全部写入成功,要么回滚。

 

b) 复杂复合操作

对于相对复杂的数据库事务操作,可使用 SQL 语句构造器,分别构造 SqlExpression 对象,将其按执行顺序放入集合中,通过 ExcuteSqlExpression 执行即可。

public void ExcuteSqlExpression(List<SqlExpression> sqlExpressionList)

这种方式执行的多个 SqlExpression 对象,亦封装为事务进行执行。

 

四、原生操作

升讯威ADO.NET增强组件支持对数据库进行原生操作,在此基础之上,结合上述功能,实现简单高效高灵活性的数据库操作。

public int ExecuteNonQuery(string commandText) public int ExecuteNonQuery(string commandText, List<CommandParameter> parameterList) public int ExecuteNonQuery(CommandType commandType, string commandText, List<CommandParameter> parameterList) public object ExecuteScalar(string commandText) public object ExecuteScalar(string commandText, List<CommandParameter> parameterList) public object ExecuteScalar(CommandType commandType, string commandText, List<CommandParameter> parameterList) public DataSet ExecuteDataSet(string commandText) public DataSet ExecuteDataSet(string commandText, string tableName) public DataSet ExecuteDataSet(CommandType commandType, string commandText, string tableName) public DataSet ExecuteDataSet(string commandText, List<CommandParameter> parameterList, string tableName) public DataSet ExecuteDataSet(CommandType commandType, string commandText,List<CommandParameter> parameterList, string tableName)

 

综上所述,升讯威ADO.NET增强组件强调的并非实体类与数据库表结构的强关联,而是通过与内存数据集的动态映射,将数据库操作时大量的重复劳动自动化,对于复杂数据库操作,继续使用原生 SQL,存储过程,自定义函数,视图等。

这种方式结合了 ORM 自动化的优点,又充分利用了数据库原生操作的强大功能,使数据层的开发轻松,高效,高质量。将简单的,重复的体力劳动,交由程序自动化处理,复杂业务场景由人工处理,并将数据映射,取/赋值等重复劳动,自动化处理。

 

以上设计实现难免存在考虑不周的情况,希望和大家多多交流。

欢迎加我QQ交流探讨,共同学习:279060597,另外我在南京,有南京的朋友吗?

 

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

相关文章
  • 开源的.NET定时任务组件Hangfire解析 - 彭泽0902

    开源的.NET定时任务组件Hangfire解析 - 彭泽0902

    2017-03-22 13:00

  • 开源免费的.NET图像即时处理的组件ImageProcessor - 彭泽0902

    开源免费的.NET图像即时处理的组件ImageProcessor - 彭泽0902

    2017-03-18 11:01

  • 一份关于组建.NET Core开源团队的倡议书 - 彭泽0902

    一份关于组建.NET Core开源团队的倡议书 - 彭泽0902

    2017-03-13 17:02

  • 【福利大放送】不止是Android,Github超高影响力开源大放送,学习开发必备教科书 - 南尘

    【福利大放送】不止是Android,Github超高影响力开源大放送,学习开

    2017-02-09 12:04

网友点评
/