J'ai eu du mal à obtenir un moyen possible de filtrer mes ensembles de résultats sur certains critères, l'un d'eux étant la recherche en texte intégral. Après l'écrémage, peu de blogs ont appris à connaître Linq ne le supporte pas directement et il y a un work around qui avait du sens. J'ai donc commencé avec cette approche, mais je suis tombé dans l'impasse quand il m'est apparu que je ne peux pas utiliser les fonctions de table dans .net 4.0 (.net 4.5 supporte mais que je ne peux pas utiliser (fonction import) à partir de maintenant).Comment y parvenir Recherche plein texte dans Linq (.net 4.0)
Ensuite, je rencontre un autre work around pour utiliser des fonctions personnalisées en éditant le fichier ssdl et ajouter des détails de la fonction (en utilisant le texte de commande pour une requête personnalisée).
Mon UDF ressemble ci-dessous: -
CREATE FUNCTION udf_CandidateFTS
(
@keywords nvarchar(4000)
)
RETURNS @resCandidates TABLE
(
CandidateID INT,
FileRank INT
)
AS
BEGIN
INSERT INTO @resCandidates
(
CandidateID,
FileRank
)
SELECT c.CandidateID, fileContent.Rank as FileRank
FROM CONTAINSTABLE (FileContent, Content, @keywords) as fileContent
INNER JOIN [file] f on f.ContentID = fileContent.[Key]
INNER JOIN [Candidate_Resume] c on c.CandidateID = f.[ID]
RETURN
END
J'ai effectué mon fichier SSDL: -
<Function Name="GetCandidateWithTextSearch" IsComposable="false">
<CommandText>
SELECT * from
dbo.udf_CandidateFTS(@keywords)
</CommandText>
<Parameter Name="keywords" Type="nvarchar" Mode="In" />
</Function>
et a ajouté un EDMFunction: -
public class MyFunctions
{
[EdmFunction("MMJ.Service.Data", "GetCandidateWithTextSearch")]
public static IList GetCandidateWithTextSearch(string keywords)
{
throw new NotSupportedException();
}
}
Et ainsi que d'autres filtres je veux faire ce qui suit: -
var query = context.Candidate
.Where(c => c.ID.Equals(MyFunctions.GetCandidateWithTextSearch("wali")
.Contains(c.ID))).ToList();
Veuillez nous aider!
Il y avait tout simplement beaucoup de problèmes avec l'intégration avec linq ... j'ai fait un proc Stored et je le fais vieux ADO.net façon ... déçu ... – Wali