J'ai cette séquence de requête Linq to SQL qui renvoie essentiellement une recherche sur une table appelée PROJECTS. et je profite de l'exécution différée pour la construire lentement.Linq to SQL utilisant plusieurs DataContexts dans une seule requête
var query = from p in objDBContext.PROJECTs
where (p.PROVIDER_ID == cwForm.productForm)
select p;
query = from p in query
where p.SubmittedDate >= cwForm.beginDateForm
select p;
j'ai écrit quelques fonctions SQL qui renvoient des valeurs et des valeurs de table scalaire en fonction d'aide, car LINQ ne supporte pas ISDATE()
ou recherche en texte intégral. ils sont dans le même fichier .dbml que la table Projects
.
Alors maintenant, j'ai:
var dateQuery = from d in objDBContext.ISDATE
select d;
//returns a bool
var ftsQuery = from f in objDBContext.FullTextSearch
select f;
//returns a valued-table with the primary keys of hits with fulltextsearch
Ma question est, comment puis-je utiliser ces nouvelles objDBContexts sur la p requête initiale? Je suis également intéressé à trouver comment mapper un executequery() dans la requête d'origine.
Quelque chose comme:
query = from p in query
from d in dateQuery
from f in ftsQuery
where d.ISDATE(p.Field1) && f.FullContextSearch(searchString)
select p;
J'espère que le bon sens. J'ai quelques types incompatibles erreurs et ai essayé googling pendant un moment mais n'ai pu trouver n'importe quoi.
merci Rex, quels seraient les frais généraux de ces SQL? J'aime vraiment la simplicité et la propreté de construire des requêtes SQL dynamiques en utilisant LINQ2SQL. et mon FullTextSearch retourne une table de valeur avec les clés d'index des lignes qui correspondent à searchString. une jointure serait-elle la plus efficace ici? – stevenjmyu
Le surcoût individuel n'est pas particulièrement important, je suppose. C'est difficile à dire sans être plus familier avec votre application. Cependant, lorsqu'une question de performance est soulevée, le nombre d'aller-retour à SQL est toujours l'une des premières choses à regarder. –