Entity framework SqlQuery exécuter la requête avec la répétition des paramètre

Je vais avoir des problèmes en essayant d'exécuter une requête SQL avec la répétition des paramètres à l'aide de entity framework.

La requête est une recherche par mot-clé, qui ressemble à des tables différentes, donc en utilisant le même paramètre de nombreuses fois. Je suis en utilisant COMME consolidés (oui, je sais que je devrais être à l'aide de FULLTEXTSEARCH, mais je n'ai pas le temps pour ça en ce moment).

J'ai essayé de l'ensemble de la syntaxe est expliquée ici: Comment utiliser DbContext.La base de données.SqlQuery<TElement>(sql, params) avec une procédure stockée? EF Premier Code CTP5 et aucun d'entre eux de faire le travail de requête (j'ai zéro lignes retournées).

J'ai même essayé de construire un tableau de chaîne dans l'exécution, avec une longueur égale au nombre de fois que le paramètre de répétitions dans la requête, puis le remplissage de tous les éléments du tableau avec le mot-clé terme de recherche. Ensuite, j'ai passé que comme le object[] paramètres. Ne fonctionne pas non plus.

La seule chose qui fonctionne c'est de faire une recherche&remplacer ce qui est évidemment une mauvaise idée car le paramètre provient d'une saisie de texte, et je vais être vulnérables aux attaques par injection SQL.

Le code de travail (vulnérables aux attaques par injection SQL, mais la requête renvoie des lignes):

//not the real query, but just for you to have an idea
string query =
    "SELECT Field1, " +
    "       Field2 " +
    "FROM   Table1 " +
    "WHERE  UPPER(Field1) LIKE '%{0}%' " +
    "OR     UPPER(Field2) LIKE '%{0}%'";

//keywordSearchTerms is NOT sanitized
query = query.Replace("{0}", keywordSearchTerms.ToUpper());

List<ProjectViewModel> list = null;
using (var context = new MyContext())
{
    list = context.Database.SqlQuery<ProjectViewModel>(query, new object[] { }).ToList();
}
return list;

Je suis en utilisant ASP.NET MVC 4, .NET 4.5, SQL Server 2008 et Entity Framework 5.

Des idées sur comment faire de la SQLQuery<> la méthode de remplir toutes les occurrences du paramètre dans la chaîne de requête? Je vous remercie beaucoup pour votre temps.

OriginalL'auteur Juan Paredes | 2013-04-30