【EF框架】使用params參數傳值防止SQL注入報錯處理


通過SqlParameter傳時間參數,代碼如下:

                    var param = new List<SqlParameter>();
                    param.Add(new SqlParameter("@StartTime", DateTime.Parse(req.StartTime)));
                    param.Add(new SqlParameter("@EndTime", DateTime.Parse(req.EndTime)));
                    
                    response.List = _ctx.Database.SqlQuery<ReceiveSummeryItem>(sql, param.ToList()).ToList();

結果一直報錯

不存在從對象類型 System.Collections.Generic.List`1[[System.Data.SqlClient.SqlParameter, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] 到已知的托管提供程序本機類型的映射。

英文報錯

No mapping exists from object type System.Collections.Generic.List`1[[System.Data.SqlClient.SqlParameter, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] to a known managed provider native type.

 

通過搜索

https://stackoverflow.com/questions/9149919/no-mapping-exists-from-object-type-system-collections-generic-list-when-executin

 看到后面的ToList() 改成 ToArray()

 

                    var param = new List<SqlParameter>();
                    param.Add(new SqlParameter("@StartTime", DateTime.Parse(req.StartTime)));
                    param.Add(new SqlParameter("@EndTime", DateTime.Parse(req.EndTime)));
                    
                    response.List = _ctx.Database.SqlQuery<ReceiveSummeryItem>(sql, param.ToArray()).ToList();
                    response.TotalCount = response.List.Count();

結果好了,真神奇!

搞定!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM