2010-04-30 6 views
2

J'utilise Microsoft Entity Model Framework pour accéder à ma base de données. J'ai un problème pendant que j'utilise cette commande execute query pour exécuter une requête Sql raw. Faites-moi savoir comment je pourrais le résoudre.comment exécuter Sql Raw Query dans Microsoft Entity Model Framework

svdc.CreateQuery<VideoMasterTable>(
    "select * from videomastertable WHERE FREETEXT(*, '"+keyword+"')" 
    ).ToList(); 

Merci à l'avance,

Kanal

+0

Quel est le problème? –

+4

Veuillez ne pas créer vos commandes sql via une concaténation de chaîne. Cela conduira à des vulnérabilités d'injection SQL. Utilisez l'interface Parameterized pour passer tous les paramètres. –

Répondre

4

CreateQuery prend ESQL, pas T-SQL. Dans EF 4 (uniquement), vous pouvez utiliser ExecuteStoreQuery à la place. Avec la méthode CreateQuery, vous créez ObjectQuery qui sera traduit en entity sql (ESQL).

+0

Salut, Merci pour votre mise à jour. Mais j'ai essayé avec Executestorequery, mais je n'ai pas pu trouver la solution. S'il vous plaît puis-je savoir comment pourrais-je utiliser cette requête ou un exemple de code. – kamal

+1

http://blogs.msdn.com/alexj/archive/2009/11/07/tip-41-how-to-execute-t-sql-directly-against-the-database.aspx –

+0

context.executestorequery (question).. – dnndeveloper

2

L'entité SQL n'est pas T-SQL. Il a une syntaxe différente et utilise des opérations d'entité. Entity Framework n'a pas de méthodes pour la recherche en texte intégral pour le moment. Vous pouvez créer de telles méthodes ou utiliser des procédures stockées et les appeler à l'aide d'Entity Framework. Pour créer vos méthodes, essayez this article. Pour utiliser les procédures stockées avec EF, vérifiez this article.