私は、文字列ベースのパラメーターインジェクションの代わりに名前付きパラメーターを使用するのが大好きです。これはタイプセーフであり、ほとんどの形式のSQLインジェクションに対して安全です。古いADO.NETでは、クエリ用にSqlCommandオブジェクトと一連のSqlParametersを作成していました。
var sSQL = "select * from Users where Name = @Name";
var cmd = new SqlCommand(conn, sSQL);
cmd.Parameters.AddWithValue("@Name", "Bob");
cmd.ExecuteReader();
さて、Entity Frameworkでは、(このリンク上で)単純なString.Formatステートメントと文字列インジェクションに回帰したように見えます:(説明のために簡略化されています)
MyRepository.Users.SqlQuery("Select * from Users where Name = {0}", "Bob");
Entity Framework DbSqlQueryクラスで名前付きパラメーターを使用する方法はありますか?