2012-02-15 20 views

答えて

5

あなたはパラメータ化クエリを使用する必要があります。

// Build where clause 
var filters = new StringBuilder(); 
var parameters = new List<object>(); 
if (!string.IsNullOrEmpty(name)) 
{ 
    if (filters.Length > 0) 
     filters.Append(" AND "); 
    filters.Append("name = @name"); 
    var param = new SqlParameter("@name", SqlDbType.NVarChar); 
    param.Value = name; 
    parameters.Add(param); 
} 
... 


// Build query 
string query = "SELECT * FROM Table"; 
if (filters.Length > 0) 
    query = query + " WHERE " + filters; 

// Execute 
db.ExecuteStoreQuery<TAble>(query, parameters.ToArray()).ToList(); 
1

SqlCommandをビルドしたときと同じ方法でそれを防止します。あなたはクエリをパラメータ化し、最後のパラメータのコレクションをExecuteStoreQueryメソッドの2番目の引数として渡します(値だけを渡すと、EFはパラメータを作成しますが、クエリに正しい順序で渡す必要があります)。

関連する問題