MVC LINQ中用封装的TSQL通用更新方法

简介:

今天用LINQ的update出现问题了,LINQ的BUG不少,呵呵,所以自己把TSQL拿出来,做了一个封装,适用的所有表,更新有两种,普通更新和记数更新

看代码:这两个方法是写在DAL里的数据操作基类里的,只有它的子类可以用它,所以用protected做为限制

   /// <summary>
        /// 通用更新方法
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="param">参数列表,奇数为字段,偶数为他前一奇数对应的值,索引0为要更新的主键,1为主键值</param>
        protected virtual void Update(string tableName, params object[] param)
        {
            StringBuilder sbSql = new StringBuilder();
            List<object> listParasm = new List<object>();
            listParasm.Add(param[0]);
            listParasm.Add(param[1]);
            int index = listParasm.Count;
            sbSql.AppendFormat("UPDATE [{0}] SET ", tableName);

            if (index == 0)
            {
                return;
            }
            else
            {
                for (int i = 2; i < param.Count(); i += 2)
                {
                    if (param[index + 1].GetType() == typeof(string))
                        sbSql.AppendFormat("{{{0}}} = '{{{1}}}',", index, index + 1);
                    else
                        sbSql.AppendFormat("{{{0}}} = {{{1}}},", index, index + 1);
                    listParasm.Add(param[index]);
                    listParasm.Add(param[index + 1]);
                    index++;
                    index++;
                }

                sbSql.Remove(sbSql.Length - 1, 1);//移除最后一个逗号
            }

            sbSql.Append(" WHERE [{0}] = {1}");
            db.ExecuteCommand(sbSql.ToString(), listParasm.ToArray());
        }

        /// <summary>
        ///  计数更新
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="param">参数列表,索引0为主键名,1表主键值,2为要计数的字段,3为增量</param>
        protected virtual void UpdateForCount(string tableName, params object[] param)
        {
            string sql = "update [{0}] set [{3}]=[{3}]+{4} where [{1}]={2}";
            List<object> listParasm = new List<object>
            {
                tableName,
                param[0],
                param[1],
                param[2],
                param[3],
            };
            db.ExecuteCommand(string.Format(sql, listParasm.ToArray()));
        }

本文转自博客园张占岭(仓储大叔)的博客,原文链接:MVC LINQ中用封装的TSQL通用更新方法,如需转载请自行联系原博主。

目录
相关文章
|
前端开发 Java 程序员
Spring MVC 框架搭建配置方法及详解
Spring MVC 框架搭建配置方法及详解
Spring MVC 框架搭建配置方法及详解
|
前端开发 Java Spring
HandlerMethodArgumentResolver(一):Controller方法入参自动封装器(将参数parameter解析为值)【享学Spring MVC】(下)
HandlerMethodArgumentResolver(一):Controller方法入参自动封装器(将参数parameter解析为值)【享学Spring MVC】(下)
HandlerMethodArgumentResolver(一):Controller方法入参自动封装器(将参数parameter解析为值)【享学Spring MVC】(下)
|
前端开发 Java Apache
HandlerMethodArgumentResolver(一):Controller方法入参自动封装器(将参数parameter解析为值)【享学Spring MVC】(中)
HandlerMethodArgumentResolver(一):Controller方法入参自动封装器(将参数parameter解析为值)【享学Spring MVC】(中)
|
前端开发 Java Spring
HandlerMethodArgumentResolver(一):Controller方法入参自动封装器(将参数parameter解析为值)【享学Spring MVC】(上)
HandlerMethodArgumentResolver(一):Controller方法入参自动封装器(将参数parameter解析为值)【享学Spring MVC】(上)
HandlerMethodArgumentResolver(一):Controller方法入参自动封装器(将参数parameter解析为值)【享学Spring MVC】(上)
|
前端开发 Java Spring
Spring MVC的Controller接受请求方式以及编写请求处理方法
标签中的内容:创建register.jsp代码: 复制代码<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 注册画面<form action="${pageContext.
657 0
|
前端开发 C#
C# MVC的一种高效分页的html方法
首先创建一个html的扩展方法,这个方法是万能的,可以直接拿到您的项目中使用:   //主要就是输出分页的超级链接的标签 //自定义分页Helper扩展 public static HtmlString ShowPageNavigate(this Htm...
1625 0
|
JSON 前端开发 数据格式
bboss mvc json插件设置日期类型格式方法
bboss mvc json插件设置日期类型格式方法 一般的json请求都有返回日期类型的数据,bboss mvc json插件在不指定日期格式dateformat的情况下,默认将日期类型的数据转换为长整型的数据,我们可以通过以下方式制定全局的日期转换格式: 修改bboss-mvc.
872 0