SqlParameter 参数化 遇到 需要参数 '@Deleted1',但未提供该参数

原始代码

            //sql语句
            string sql = string.Empty;
            //sql语句相关的 参数
            List<SqlParameter> args = new List<SqlParameter>();
            if (db_tag == null)
            {
                sql += "declare @CurrentId int; " +
                    "INSERT INTO [dbo].[CustomerTag] ([Name] ,[CreateUserId] ,[CreateTime] ,[PartnerId],[Deleted] ) " +
                    "VALUES (@Name ,@CreateUserId ,@CreateTime ,@PartnerId ,@Deleted ) ;" +
                    " set @CurrentId=SCOPE_IDENTITY(); " +
                    "INSERT INTO [dbo].[MyCustomerTag] ([CustomerId] ,[UserId] ,[TagId] ,[UpdateTime]) " +
                    "VALUES (@CustomerId ,@UserId ,@CurrentId  ,@UpdateTime);";
                args.AddRange(new List<SqlParameter> {
                        new SqlParameter ("Name",  request.Name),
                        new SqlParameter ("CreateUserId",  this.Token_UserId ),
                        new SqlParameter ("CreateTime", DateTime.Now ),
                        new SqlParameter ("PartnerId", this.Token_PartnerId),
                        new SqlParameter ("Deleted ", 0),
                        new SqlParameter ("CustomerId", request.CustomerId),
                        new SqlParameter ("UserId",  this.Token_UserId),
                        new SqlParameter ("UpdateTime", DateTime.Now),
                });
            }

浏览器调试报错

{
  "Code": 10004,
  "Message": "参数化查询 '(@Name nvarchar(2),@CreateUserId int,@CreateTime datetime,@Partn' 需要参数 '@Deleted',但未提供该参数。"
}

找了好久的原因 发现 如果 int 值 给 0

构造函数会使用 下面这个

public SqlParameter(string parameterName, SqlDbType dbType);

正常应该使用下面的

public SqlParameter(string parameterName, object value);

如果数据库字段有默认值,遇到这样的情况就不给 数据库默认是0

如果没有有 字符串格式化吧

或者换Dapper的 封装能解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值