我有這種方法,應該採取未知量的ID。 我得到了這種方法幾乎完成,但它不安全,但出於顯而易見的原因,我知道我可以寫我自己的方法去除參數,但我會更舒適通過使用一些內置的方法。如何使用實體框架SqlQuery來保護SQL參數?
這裏是方法
public static List<LocationModel> FetchCitiesByAreas(IEnumerable<string> areas)
{
using (var db = new BoligEnt())
{
var sqlQuery = new StringBuilder();
var first = true;
sqlQuery.Append("SELECT DISTINCT a.city AS City, a.zip AS Zip ");
sqlQuery.Append("FROM zip_city AS a ");
sqlQuery.Append("WHERE country = 1 ");
foreach (var d in areas)
{
if (first)
{
sqlQuery.Append("AND a.area_id = '" + d + "'");
first = false;
}
else
{
sqlQuery.Append("OR a.area_id = '" + d + "'");
}
}
return db.Database.SqlQuery<LocationModel>(sqlQuery.ToString()).ToList();
}
}
我知道它已經建立了,但正如我前面提到的我不知道ID的確切量會在
db.Database.SqlQuery<LocationModel>("SELECT * FROM table WHERE id = @p0 ;", id).ToList();
感謝
此功能
您使用的是什麼DBMS? Sql Server? – paqogomez 2014-10-01 20:36:29
實體框架6與MySql服務器 – 2014-10-01 20:38:40
我認爲你有點錯過了EF的點 - 這是:避免必須編寫所有的SQL,而是使用漂亮的Linq查詢來獲取您需要的數據..... – 2014-10-01 20:43:01