C#安全地构建一个使用Entity Framework执行的SQL字符串

前端之家收集整理的这篇文章主要介绍了C#安全地构建一个使用Entity Framework执行的SQL字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用带有.sqlQuery(string sql)命令的EF执行一些sql.

我想确保我的sql字符串已完全清理,因此逻辑方法是使用带参数的sqlCommand对象来构建它.

但是我不想使用sqlCommand执行它,我只是希望sqlCommand吐出一个字符串,我可以插入我的EF .sqlQuery(…)调用.

有没有办法做到这一点,或另一种确保我的.sqlQuery不会导致注入的方法

解决方法

EF不支持开箱即用吗?

您应该能够使用参数调用sqlQuery,因此它将处理sql注入等,就像sqlCommand一样:

var tests = context.Database.sqlQuery<Test>(
    @"SELECT Id,Name FROM tests where Name={0}","TestName");

要么..

var tests = context.Database.sqlQuery<Test>(
    @"SELECT Id,Name FROM tests where Name=@name",new sqlParameter("@name","TestName"));

猜你在找的C#相关文章