Entity Framework 4.1 を使用して ASP.Net MVC 3 アプリケーションを開発しています。クエリの 1 つで、 DbSetクラスのSqlQueryメソッドを利用しています。これにより、エンティティ リストを返す生の SQL クエリを実行できます。
Service クラス内にメソッドがあります。以下を参照してください。生の SQL を記述し、shiftIDとshiftDateIDの 2 つのパラメーターを渡します。
public IList<User> GetAvailableLocums(int shiftID, int shiftDateID)
{
var query = @"set language 'British'
SELECT *
FROM [Shift]
WHERE shiftID = @p0
AND shiftDateID = @p1";
return _UoW.User.GetWithRawSql(query, shiftID, shiftDateID).ToList();
}
次に、Repository クラスで次のメソッドを呼び出します。以下を参照してください。
public IEnumerable<TEntity> GetWithRawSql(string query, params object[] parameters)
{
return dbSet.SqlQuery(query, parameters).ToList();
}
これが SQL インジェクション攻撃にさらされるのではないかと心配しています。もしそうなら、私の2つのパラメータをパラメータ化する方法を知っている人はいますか?
ご協力いただきありがとうございます。