使用“动软代码生成器”需要注意的问题

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

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);
		}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值