17回答

0收藏

Dapper是否支持like运算符?

技术问答 技术问答 626 人阅读 | 17 人回复 | 2022-03-03

使用Dapper-dot-net …" a+ w2 d. I4 Q$ R
以下数据对象无结果:
5 \! d6 {0 O0 t! R" W6 ovar data = conn.Query(@"    select top      Term as Label,    Type,    ID     from SearchTerms     WHERE Term like '%@T%'",    new { T = (string)term });但是,当我只使用传统的字符串格式时,例如:
1 H. r' ~6 ?! }# H. u" fstring QueryString = String.Format("select top 25 Term as Label,Type,ID from SearchTerms WHERE Term like ",term);var data = conn.Query(QueryString);我在集合中得到25行。Dapper参数的结尾是否无法正确分析@T?
& [, x5 L* O( n4 b) p# L- T1 H                                                                , q( G4 ]- O3 a6 s. F) v
    解决方案:                                                                ! F2 ?  _, @  @5 _' w
                                                                尝试:% Q1 M5 h9 Y: W& n0 [; i9 c: q' q
term = "whateverterm";var encodeForLike = term => term.Replace("[","[[]").Replace("%","[%]");string term = "%"   encodeForLike(term)   "%";var data = conn.Query(@"   select top 25   Term as Label,  Type,  ID   from SearchTerms   WHERE Term like @term",  new { term });类似的操作符没有什么特别的,你永远不需要在字符串中包含参数,他们不能工作,而是把它们解释为字符串。
6 R1 e/ S, u; J, m7 l, ]笔记
; H( c' v6 a7 a强烈建议您不要在第二段中使用硬编码示例,除此之外sql除了巨大的注射问题,它还可能导致dapper泄漏。
# E' S# H( c# l0 [+ e警告4 ]3 l+ S0 G$ W1 a- X4 P" j6 k
任何like通配符开头的匹配不能保存,这意味着它很慢,需要进行索引扫描。
分享到:
回复

使用道具 举报

回答|共 17 个

宝德

发表于 2022-3-3 23:20:13 | 显示全部楼层

鄙视楼下的顶帖没我快,哈哈
回复

使用道具 举报

海边看日

发表于 2022-3-5 13:43:19 | 显示全部楼层

路过 帮顶 嘿嘿
回复

使用道具 举报

胡朝磊

发表于 2022-3-6 14:56:34 | 显示全部楼层

高手云集 果断围观
回复

使用道具 举报

白云飞雪

发表于 2022-3-7 09:15:49 | 显示全部楼层

鄙视楼下的顶帖没我快,哈哈
回复

使用道具 举报

怀素抱朴

发表于 2022-3-8 04:50:41 | 显示全部楼层

占位编辑
回复

使用道具 举报

梨花公主

发表于 2022-3-8 16:05:19 | 显示全部楼层

撸过
回复

使用道具 举报

吴金鑫

发表于 2022-3-8 23:27:59 | 显示全部楼层

确实不错,顶先
回复

使用道具 举报

罗华焱

发表于 2022-3-9 05:23:06 | 显示全部楼层

小白一个 顶一下
回复

使用道具 举报

势在必得

发表于 2022-3-9 10:42:33 | 显示全部楼层

我是个凑数的。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

29055 积分
9659 主题
热门推荐