圖檔引自網絡
環境:
Visual Studio 2017旗艦版
MySQL 5.7(管理工具 => Navicat for MySQL 11.1.13 64位企業版)
.Net Framework 4.6.1
Entity Framework 6.2
MySQL for Visual Studio 1.2.8
MySQL Connector Net 6.9.12
MySQL.Data 6.9.12
//需求:
我需要根據字段FDocName進行模糊查詢
lambda表達式
其中moduleName是一個keyword參數,modules是一個資料集。
//問題:
無論keyword輸入的參數是任何值經過上述語句後都将資料全部過濾掉了,導緻Count始終為0。通過視窗可以看到moduleName=“服”,而資料集一共存在2條資料,且第2條資料的FDocName值為“熱門服務”,那麼根據lambda中contains篩選後應該會存在一條資料的。
局部變量視窗(篩選前)
通過篩選後的局部視窗我們可以看到結果居然是空的,說明資料沒有按照預期的篩選出第2條資料來。
局部變量視窗(篩選後)
生成的語句為:`Extent1`.`FDocName` LIKE @p__linq__0,起初懷疑是環境版本對應關系有問題,因為網上有人遇到過Contains使用時出現類似的問題:
網友遇到的問題描述
因為我用的也是變量的方式,是以我嘗試将變量更改為字面量,直接将"服"寫在Contains函數中,但結果一樣是0條,底部有網友回複說:
版本不一緻
但我直接排除了這個原因,因為我這個問題在之前的倉庫版本中是不存在的,是以我估計是我這一次重新生成了資料實體模型哪裡出錯了,然後把生成前的一個版本克隆下來,對比了VS生成的資料庫連接配接字元串立馬就發現了問題。
出現問題的連接配接字元串
正常的連接配接字元串
原來,我在建立資料庫連接配接時沒有指定編碼,導緻中文字型在生成SQL時亂碼,那肯定比對不到任何資料了。
是以連接配接字元串中最好需要指定一下字元集編碼,避免一些不必要的麻煩。
(emmmmmmmmmmmmmm。。。還好沒在環境版本不一緻上走下去然後直接解除安裝環境重裝,那得多麻煩啊。。。)