使用IConditionalModel动态查询时,如何避免参数超长的问题? 返回

SqlSugar 沟通中
3 185

例如我的字段名为 AAAAA_AAAAA_AAAAA_AAAAA_AAAAA, 已经超过30位了,在常规lambda查询时的注入配置是有效的:

 if (column.PropertyName.Length > 20)
 {
     column.SqlParameterDbType = typeof(CommonPropertyConvert);
 }


我现在在构建动态的查询,需要用到IConditional,怎么样也能用类似上面的做法保证参数化之后不超过30位?

// 通过自定义的WhereModels构建CondtinalModels
 IEnumerable<IConditionalModel> conditionalModels = pagedQueryModel.WhereModels.Select(a => new ConditionalModel
 {
     ConditionalType = (ConditionalType)a.Conditional,
     FieldName = GetDbColumnName<T>(a.FieldName, isBaseEntity),  // 此处的FieldName存在字段超过30位或接近30位的情况
     FieldValue = a.FieldValue,
     CSharpTypeName = a.CSharpTypeName
 });
 query = query.Where(conditionalModels.ToList());


热忱回答3

  • fate sta fate sta VIP0
    1个月前
      IsAutoCloseConnection = true,
       DbType = DbType.Oracle,
       ConnectionString = Connection,
       MoreSettings = new ConnMoreSettings()
       {
           MaxParameterNameLength = 30 //设置最大长度
       }


    0 回复
  • fate sta fate sta VIP0
    1个月前

    看一下这个参数生不生效,如果不生效我在处理一下

    0 回复
  • Boss Zhou Boss Zhou VIP0
    1个月前

    @fate sta:谢谢回复。 已经验证,确实有效!

    0 回复