zoukankan      html  css  js  c++  java
  • 使用“动软代码生成器”需要注意的问题 子曰

     

    在日常开发中,编写三层架构代码是个很枯燥的活,常用的都是一些增删改查,无非表名称不一样而已。如果数据库已经建好,使用动软代码生成器来自动生成底层三层代码是个很好的方法。但在使用过程中,我也发现了一些问题:

    1.UPFATE

     用动软生成的update语句都类似

    /// <summary>
    		/// 更新一条数据
    		/// </summary>
    		public void Update(Maticsoft.Model.payment model)
    		{
    			StringBuilder strSql=new StringBuilder();
    			strSql.Append("update payment set ");
    			strSql.Append("fj_id=@fj_id,");
    			strSql.Append("pay_amount=@pay_amount,");
    			strSql.Append("pay_date=@pay_date,");
    			strSql.Append("purpose=@purpose,");
                strSql.Append("verify=@verify");
    			strSql.Append(" where id=@id ");
    			SqlParameter[] parameters = {
    					new SqlParameter("@id", SqlDbType.Int,4),
    					new SqlParameter("@fj_id", SqlDbType.Int,4),
    					new SqlParameter("@pay_amount", SqlDbType.Money,8),
    					new SqlParameter("@pay_date", SqlDbType.DateTime),
    				new SqlParameter("@purpose", SqlDbType.VarChar,50),
                        new SqlParameter("@verify", SqlDbType.Bit)};
    			parameters[0].Value = model.id;
    			parameters[1].Value = model.fj_id;
    			parameters[2].Value = model.pay_amount;
    			parameters[3].Value = model.pay_date;
    			parameters[4].Value = model.purpose;
                parameters[5].Value = model.verify;
    			DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);
    		}


    这就产生一个问题,如果更新的仅仅是其中一个字段,则其他字段都会被更新为空字符。解决的办法,是将其修改为

    /// <summary>
    		/// 更新一条数据
    		/// </summary>
    		public void Update(Maticsoft.Model.payment model)
    		{
    			StringBuilder strSql=new StringBuilder();
    			strSql.Append("update payment set ");
                strSql.Append("fj_id=ISNULL(@fj_id,fj_id),");
                strSql.Append("pay_amount=ISNULL(@pay_amount,pay_amount),");
                strSql.Append("pay_date=ISNULL(@pay_date,pay_date),");
                strSql.Append("purpose=ISNULL(@purpose,purpose),");
                strSql.Append("verify=ISNULL(@verify,verify),");
    			strSql.Append(" where id=@id ");
    			SqlParameter[] parameters = {
    					new SqlParameter("@id", SqlDbType.Int,4),
    					new SqlParameter("@fj_id", SqlDbType.Int,4),
    					new SqlParameter("@pay_amount", SqlDbType.Money,8),
    					new SqlParameter("@pay_date", SqlDbType.DateTime),
    				new SqlParameter("@purpose", SqlDbType.VarChar,50),
                        new SqlParameter("@verify", SqlDbType.Bit)};
    			parameters[0].Value = model.id;
    			parameters[1].Value = model.fj_id;
    			parameters[2].Value = model.pay_amount;
    			parameters[3].Value = model.pay_date;
    			parameters[4].Value = model.purpose;
                parameters[5].Value = model.verify;
    			DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);
    		}


     

  • 相关阅读:
    Vue动态路由配置-router.addRoute
    安装nginx(Centos和docker)
    前后端分离跨域问题解决方案
    centos7 部署 gitlab
    date命令使用方法
    电脑明明安装了模块,但是pycharm还是找不到怎么办
    shell脚本中字符串截取问题
    linux中每登录一个终端,就会自动执行脚本
    腾讯文档中怎么添加二级缩进符号
    查看CPU某一核的情况
  • 原文地址:https://www.cnblogs.com/suixufeng/p/3336104.html
Copyright © 2011-2022 走看看