有没有某个开关属性,可以在生成的sql字符串参数前不加N ? 返回

SqlSugar 沟通中
18 971
该叫什么 历历 发布于2周前
悬赏:0 飞吻

如题老师,

我们有很多自定义表单查询功能,都是sql语句,做参数化查询,没有实体,

字符串参数默认是N转NVarchar,有没有办法不默认?

我们很多char类型和varchar类型字段,

nvarchar字段很少用来做为搜索项这样参数化查询,大多是展示使用,insert、update 索引不索引失效无所谓,不影响什么,倒是无所谓。

这个N转换有没有办法统一去掉?


热忱回答18

  • 找到了

    0 回复
  • image.png

    @fate sta: 这个怎么没有用老师,生成的sql语句,字符串参数前面还是都带N'' 转换

    0 回复
  • image.png

    @fate sta: 这是我简单做了个筛选测试。

    image.png

    好像有的可以,有的不可以 ,是执行sql语句和用实体做查询的区别吗? 我还在测

    0 回复
  • @fate sta:  image.png

    这样确实 不行老师,您知道大概怎么回事吗?

    0 回复
  • @fate sta

    版本号5.1.4.167,在线等

    0 回复
  • 说具体代码。

    0 回复
  • 什么样的代码 要改dbtype

    0 回复
  • 还有打印是不准的。提供具体不行的代码。

    0 回复
  • 所有的参数化查询  生成的sql语句,字符串参数其实都不想带N。不是具体的代码 老师。上面贴的代码的意思 其实想表达的是 使用par.CustomDbType = OracleDbType.Char; 和DisableNvarchar = true 都不行, 

    查询使用db.SqlQueryable<ExpandoObject>(valueStr).AddParameters(pars).ToList(); 这种方式

    和Db.Queryable<StaffOrgEntity>() 这种方式  生成的sql语句参数依然都是带N的,像问问还有什么方法可以去掉。

    @fate sta

    0 回复
  • 每条执行 都用AOP 方法记录了日志,现在看 还是都带N 的

    0 回复
  • 提供具体的DEMO。OK

    0 回复
  • 0 回复
  •     //获取原生SQL推荐 5.1.4.63  性能OK
                Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));


    打印SQL用这个输出

    0 回复
  • anistring是varchar  

    string是nvarchar

    0 回复
  • @fate sta

    SQL-2025-06-26_15-50.txt

    这是我生成的日志老师,我们系统sql 执行量 还是比较大的,都是按10分钟生成一个文本

    0 回复
  • @fate sta:o  好的,我试试这个,我用的是UtilMethods.GetSqlString

    0 回复
  •  只看DEMO

    0 回复
  • @fate sta:好吧  我写个demo,其实感觉我说的都可明白了

    0 回复